Создание плагина для хранения на Apache Drill для HDFS
Я пытаюсь сделать плагин для хранения Hadoop (hdfs) и Apache Drill. На самом деле я запутался, и я не знаю, что установить в качестве порта для соединения hdfs://, и что установить для местоположения. Это мой плагин:
{
"type": "file",
"enabled": true,
"connection": "hdfs://localhost:54310",
"workspaces": {
"root": {
"location": "/",
"writable": false,
"defaultInputFormat": null
},
"tmp": {
"location": "/tmp",
"writable": true,
"defaultInputFormat": null
}
},
"formats": {
"psv": {
"type": "text",
"extensions": [
"tbl"
],
"delimiter": "|"
},
"csv": {
"type": "text",
"extensions": [
"csv"
],
"delimiter": ","
},
"tsv": {
"type": "text",
"extensions": [
"tsv"
],
"delimiter": "\t"
},
"parquet": {
"type": "parquet"
},
"json": {
"type": "json"
},
"avro": {
"type": "avro"
}
}
}
Итак, правильно ли установить localhost:54310, потому что я получил это командой:
hdfs -getconf -nnRpcAddresses
или это:8020?
Второй вопрос, что мне нужно установить для местоположения? Моя папка hadoop находится в:
/usr/local/hadoop
, и там вы можете найти /etc /bin /lib /log ... Итак, мне нужно указать местоположение на моей датоде или?
Третий вопрос Когда я подключаюсь к Drill, я прохожу через sqlline, а затем подключаюсь к своему зоопарку, например:
!connect jdbc:drill:zk=localhost:2181
Мой вопрос здесь, после того, как я сделаю плагин хранилища и когда я подключаюсь к Drill с zk, могу ли я запросить файл hdfs?
Мне очень жаль, если это нубский вопрос, но я не нашел ничего полезного в интернете или, по крайней мере, он мне не помог. Если вы сможете объяснить мне кое-что, я буду очень благодарен.
2 ответа
Согласно документации Drill,
{
"type" : "file",
"enabled" : true,
"connection" : "hdfs://10.10.30.156:8020/",
"workspaces" : {
"root" : {
"location" : "/user/root/drill",
"writable" : true,
"defaultInputFormat" : null
}
},
"formats" : {
"json" : {
"type" : "json"
}
}
}
В "connection"
,
поставить наменоде адрес сервера.
Если вы не уверены в этом адресе. Проверьте fs.default.name
или же fs.defaultFS
свойства в core-site.xml
,
Подходит к "workspaces"
,
Вы можете сохранить рабочие места в этом. В приведенном выше примере есть workspace
с именем root
и местоположение /user/root/drill
, Это ваше местоположение HDFS.
Если у вас есть файлы в /user/root/drill
Каталог hdfs, вы можете запросить их, используя это имя рабочей области.
Пример: abc
находится в этом каталоге.
select * from dfs.root.`abc.csv`
После успешного создания плагина вы можете начать детализацию и начать запросы.
Вы можете запросить любой каталог независимо от рабочих пространств.
Скажем, вы хотите запросить employee.json
в /tmp/data
каталог hdfs.
Запрос это:
select * from dfs.`/tmp/data/employee.json`
У меня похожая проблема, Drill не может прочитать сервер DFS. Наконец, проблема связана с портом namenode. Адрес веб-интерфейса namenode по умолчанию - http://localhost:50070/.
Адрес по умолчанию для сервера namenode: hdfs://localhost:8020/.