在 Apache Drill 上制作存储插件到 HDFS
Making storage plugin on Apache Drill to 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 ?
第二个问题,location需要设置什么?我的 hadoop 文件夹位于:
/usr/local/hadoop
,在那里你可以找到 /etc /bin /lib /log ... 那么,我需要在我的数据节点上设置位置吗?
第三个问题。当我连接到 Drill 时,我会通过 sqlline 而不是像这样连接我的动物园管理员:
!connect jdbc:drill:zk=localhost:2181
我的问题是,在我制作存储插件后,当我用zk连接到Drill时,我可以查询hdfs文件吗?
如果这是一个菜鸟问题,我很抱歉,但我在互联网上没有找到任何有用的东西,或者至少它没有帮助我。
如果您能向我解释一些事情,我将不胜感激。
根据演习 docs,
{
"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"
,
输入namenode服务器地址。
如果您不确定这个地址。
检查 core-site.xml
中的 fs.default.name
或 fs.defaultFS
属性。
即将"workspaces"
,
您可以在此保存工作区。在上面的示例中,有一个 workspace
,名称为 root
,位置为 /user/root/drill
。
这是您的 HDFS 位置。
如果在/user/root/drill
hdfs目录下有文件,可以使用这个工作空间名查询。
示例:abc
在这个目录下。
select * from dfs.root.`abc.csv`
插件创建成功后,即可开始钻取,开始查询。
无论工作区如何,您都可以查询任何目录。
假设你想在/tmp/data
hdfs目录中查询employee.json
。
查询是:
select * from dfs.`/tmp/data/employee.json`
我有类似的问题,Drill 无法读取 dfs 服务器。最后,问题是由namenode端口引起的。
namenode web默认地址UI是http://localhost:50070/。
namenode服务器的默认地址是hdfs://localhost:8020/。
我正在尝试为 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 ?
第二个问题,location需要设置什么?我的 hadoop 文件夹位于:
/usr/local/hadoop
,在那里你可以找到 /etc /bin /lib /log ... 那么,我需要在我的数据节点上设置位置吗?
第三个问题。当我连接到 Drill 时,我会通过 sqlline 而不是像这样连接我的动物园管理员:
!connect jdbc:drill:zk=localhost:2181
我的问题是,在我制作存储插件后,当我用zk连接到Drill时,我可以查询hdfs文件吗?
如果这是一个菜鸟问题,我很抱歉,但我在互联网上没有找到任何有用的东西,或者至少它没有帮助我。 如果您能向我解释一些事情,我将不胜感激。
根据演习 docs,
{
"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"
,
输入namenode服务器地址。
如果您不确定这个地址。
检查 core-site.xml
中的 fs.default.name
或 fs.defaultFS
属性。
即将"workspaces"
,
您可以在此保存工作区。在上面的示例中,有一个 workspace
,名称为 root
,位置为 /user/root/drill
。
这是您的 HDFS 位置。
如果在/user/root/drill
hdfs目录下有文件,可以使用这个工作空间名查询。
示例:abc
在这个目录下。
select * from dfs.root.`abc.csv`
插件创建成功后,即可开始钻取,开始查询。
无论工作区如何,您都可以查询任何目录。
假设你想在/tmp/data
hdfs目录中查询employee.json
。
查询是:
select * from dfs.`/tmp/data/employee.json`
我有类似的问题,Drill 无法读取 dfs 服务器。最后,问题是由namenode端口引起的。 namenode web默认地址UI是http://localhost:50070/。
namenode服务器的默认地址是hdfs://localhost:8020/。