如何在机器2中使用nifi将csv文件从机器1发送到机器3



我有3台机器用于我的场景机器1:有一个.csv文件机器2:Nifi已安装并运行机器3:HDFS和Hbase已安装并运行。

现在,我必须使用在机器2中运行的nifi将.csv文件从机器1发送到在机器3中运行的Hbase表。

为了从机器1获得文件,我使用GetSFTP处理器,我可以获得.csv文件,直到nifi在机器2中运行。现在我不知道该使用哪个处理器,以便将文件发送到机器3中运行的hbase表?我使用了PutHbaserecord,但如果我的habse和hdfs在机器2中运行,这只会帮助我存储在habse表中。

所以有人能告诉我如何使用nifi发送到机器3吗?

hbase-site.xml

<configuration>
<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>
<property>
<name>hbase.rootdir</name>
<value>hdfs://localhost:9000/hbase</value>
</property>
<property>
<name>hbase.zookeeper.property.clientPort</name>
<value>2222</value>
</property>
<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/home/hadoop/zookeeper</value>
</property>
</configuration>
<property>
<name>hbase.wal.provider</name>
<value>filesystem</value>
</property>
<property>
<name>hbase.tmp.dir</name>
<value>./tmp</value>
</property>
</configuration>

core-site.xml

<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hdoop/tmpdata</value>
</property>
<property>
<name>fs.default.name</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>

hdfs-site.xml

<configuration>

<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.name.dir</name>
<value>file:///home/hadoop/hdfs/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>file:///home/hadoop/hdfs/datanode</value>
</property>
</configuration>

我使用了PutHbaserecord,但如果我的hbase和hdfs在机器2 中运行,这只会帮助我存储在hbase表中

我认为这不是真的。根据文档,您需要提供HBase客户端服务

https://nifi.apache.org/docs/nifi-docs/components/org.apache.nifi/nifi-hbase-nar/1.6.0/org.apache.nifi.hbase.PutHBaseRecord/

在该服务中,您提供Hadoop配置文件(一个hbase-site.xml(,其中包含远程hbase集群的IP:port信息(通过Zookeeper(,而不是localhost;如果Nifi被赋予(或者Zookeeper返回(localhost,那么是的,它会认为HBase正在Nifi节点上运行。

您只需要在xml中设置这些即可连接到分布式hbase集群

  • hbase.zookeeper.quorum
  • hbase.zookeeper.property.clientPort

顺便说一句,hbase有自己的CLI命令来导入CSV文件,而Nifi对于上传数据这一简单任务来说似乎有些过头了

相关内容

最新更新