将数据插入到HDFS
假设在本地系统,这是所谓的file.txt文件中的数据,应当保存在HDFS文件系统。按照下面给出插入在Hadoop的文件系统所需要的文件的步骤。
第1步
必须创建一个输入目录。
$ $HADOOP_HOME/bin/hadoop fs -mkdir /user/input
第2步
传输并使用本地系统put命令,Hadoop文件系统中存储的数据文件。
$ $HADOOP_HOME/bin/hadoop fs -put /home/file.txt /user/input
第3步
可以使用ls命令验证文件。
$ $HADOOP_HOME/bin/hadoop fs -ls /user/input
说明:
执行上述第2步,报错:
原因:集群中有些节点的防火墙没有关闭,只关闭namenode所在主机的防火墙问题依旧如此。
现象如图:
[root@localhost home]# hadoop fs -put /home/file.txt /user/input
17/10/17 11:57:12 INFO hdfs.DataStreamer: Exception in createBlockOutputStream
java.net.NoRouteToHostException: No route to host
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)
at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:531)
at org.apache.hadoop.hdfs.DataStreamer.createSocketForPipeline(DataStreamer.java:226)
at org.apache.hadoop.hdfs.DataStreamer.createBlockOutputStream(DataStreamer.java:1591)
at org.apache.hadoop.hdfs.DataStreamer.nextBlockOutputStream(DataStreamer.java:1547)
at org.apache.hadoop.hdfs.DataStreamer.run(DataStreamer.java:658)
17/10/17 11:57:12 WARN hdfs.DataStreamer: Abandoning BP-667646706-10.0.1.232-1506802644497:blk_1073741827_1003
解决方法:关闭所有节点的防火墙!
[root@hserver2 nm-local-dir]# firewall-cmd --state
running
[root@hserver2 nm-local-dir]# systemctl stop firewalld.service
[root@hserver2 nm-local-dir]# firewall-cmd --state
not running
再次执行第2步,第3步:
[root@hserver1 current]# hadoop fs -put /home/file.txt /user/input 执行成功!
[root@hserver1 current]# hadoop fs -ls /user/input
Found 1 items
-rw-r--r-- 2 root supergroup 12 2017-10-17 13:35 /user/input/file.txt
[root@hserver1 current]#