大数据学习之测试hdfs和mapreduce(二)

       上篇已经搭建好环境,本篇主要测试hadoop中的hdfs和mapreduce功能。

首先填坑:启动环境时发现DataNode启动不了。查看日志


从日志中可以看出,原因是因为datanode的clusterID 和 namenode的clusterID 不匹配。打开hdfs-site.xml里配置的datanode和namenode对应的目录,分别打开current文件夹里的VERSION,可以看到clusterID项正如日志里记录的一样,确实不一致,修改datanode里VERSION文件的clusterID 与namenode里的一致,再重新启动dfs(执行start-dfs.sh)再执行jps命令可以看到datanode已正常启动。

出现该问题的原因:在第一次格式化dfs后,启动并使用了hadoop,后来又重新执行了格式化命令(hdfs namenode -format),这时namenode的clusterID会重新生成,而datanode的clusterID 保持不变。

1:言归正传开始命令:start-all.sh开启hadoop的服务模块。开启后,检查模块是否都启动了:jps


2.将文件上传到hadoop上。测试命令:hadoop fs -put test.txt hdfs://192.168.17.99:9000/


踏坑小能手又中招了。。。。Cannot create file/test.txt._COPYING_. Name node is in safe mode.

那我们来分析下这个错误,从字面上来理解:
Name node is in safe mode
说明Hadoop的NameNode处在安全模式下。
那什么是Hadoop的安全模式呢?
在分布式文件系统启动的时候,开始的时候会有安全模式,当分布式文件系统处于安全模式的情况下,文件系统中的内容不允许修改也不允许删除,直到安全模式结束。安全模式主要是为了系统启动的时候检查各个DataNode上数据块的有效性,同时根据策略必要的复制或者删除部分数据块。运行期通过命令也可以进入安全模式。在实践过程中,系统启动的时候去修改和删除文件也会有安全模式不允许修改的出错提示,只需要等待一会儿即可。
现在就清楚了,那现在要解决这个问题,我想让Hadoop不处在safe mode 模式下,能不能不用等,直接解决呢?
答案是可以的,只要在Hadoop的目录下输入:
hadoop dfsadmin -safemode leave
也就是关闭Hadoop的安全模式,这样问题就解决了。

别高兴太早,查询hadoop的安全模式hadoop dfsadmin -safemode get  Safe 显示mode is OFF,但是执行的时候就是不生效,关机重启-循环错误DataNode又起不来,继续改clusterID。。。

再次执行测试命令:hadoop fs -put test.txt hdfs://192.168.17.99:9000/成功将文件上传。

在本地服务器访问虚拟机。可以看到此文件,现在这个文件是存储在hadoop上,被切割成了许多部分存在各个节点,于源文件没有关系了。。可提供下载。
3.测试mapreduce,架包可以自己写,hadoop也有自带的例包,放在/app/hadoop-2.4.1/share/mapreduece下。


hadoop-mapreduce-examples-2.4.1.jar包里有很多函数,指定运行的主类。

例如:hadoop jar hadoop-mapreduce-examples-2.4.1.jar pi 5 5 计算圆周率PI,任务5个,取样5个。开始计算,数据量越大越接近真实值。




欢迎投稿 职场/创业方向. 邮箱wangfzcom(AT)163.com:王夫子社区 » 大数据学习之测试hdfs和mapreduce(二)

点评 0

评论前必须登录!

登陆 注册