设为首页 收藏本站
查看: 1214|回复: 0

[经验分享] Hadoop 测试例子运行详解

[复制链接]

尚未签到

发表于 2015-7-12 12:36:02 | 显示全部楼层 |阅读模式
一、软件环境
  Hadoop搭建系统环境:三台完全一样的Centos6.5_64位系统,其中一个做Namenode和Datanode,另外两个做Datanode。
  Hadoop安装目标版本:Hadoop2.2.0

二、运行步骤

2.1 新建输入文件内容
  在当前目录新建一个文件夹叫input,在文件夹里新建三个文件f1.txt,f2.txt,f3.txt,并分别写入一些内容。



mkdir -p input/{1..3}.txt     递归创建目录和文件
echo "hello hadoop" > input/f1.txt'
echo "hello java" > input/f2.txt'
echo "hello world" > input/f3.txt'
2.2 在运行的hadoop中创建文件夹
  注意在操作之前,一定要保证这个时候hadoop已经正常运行,datanode、jodtracker、namenode等必要信息均显示正常。
  使用如下的命令创建文件夹



hadoop fs -mkdir -p /home/hadoop/input
/*注意相对路径,这里的/home/hadoop是我当前用户的目录,可根据自己具体情况进行改动 没有-p参数会无法创建成功*/

  然后查看我们在hadoop中是否已经成功创建了该文件夹:



[hadoop@master bin]$ hadoop fs -ls /home/hadoop/
Found 2 items
drwxr-xr-x   - hadoop supergroup  0 2014-03-05 19:00 /home/hadoop/input
如果我们能看到如上的字样表明我们这一步已经成功了。

2.3 把文件复制到hadoop中的文件系统中(Hdfs)



[hadoop@master ~]$ hadoop fs -put input/*  /home/hadoop/input/
把(本地目录)/home/hadoop/input/*下的所以文件复制到HDFS中的input目录下

  然后查看文件是否在hadoop中,并查看文件内容是否和输入的一致:



hadoop fs -ls /home/hadoop/input
hadoop fs -cat /home/hadoop/input/f1.txt

  注:我们可以 通过节点IP或节点主机名:50070/dfshealth.jsp来从浏览器中查看整个hdfs文件系统的目录,打开namenode的链接,点击其中的Browse the filesystem超级链接,就可以看到相应的目录结构了。

2.4 运行example例子
  我们要运行的例子在hadoop的安装目录下,名称叫做hadoop-mapreduce-examples-2.2.0.jar。到了这一步,无疑是出错率最高的时候,运行命令如下:



[hadoop@master bin]$ yarn jar ../share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount  /home/hadoop/dfs/input/ /home/hadoop/dfs/output/  

  其中,output是输出文件夹,必须不存在,它由程序自动创建,如果预先存在output文件夹,则会报错。
  在操作之前,请务必多次检查如下内容:


  • 自己的input目录是否已经存入输入内容;
  • output文件夹是否存在;
  • 运行的hadoop用jps查看一下是否所有应该运行的进程都存在;
  • 如果之前开过hadoop运行,这不是第一次开的话。可以试试先./stop-all.sh,然后把core-site.xml中的hadoop.tmp.dir的value所在路径,即/home/hadoop/tmp/hadoop_tmp删除,然后重新建立一遍,如果你是新建的hadoop用户,最好用chown指令再把文件的所属更改一下。如上一样的操作对hdfs-site.xml中的dfs.data.dir的value路径做一遍。最好对所有datanode和namenode也做一遍,保险起见。因为,我就是这些小细节上出了问题,由于之前运行导致这些本应该空的文件夹中存在文件,而频繁报错。
  • 如果之前运行过wordcount报错记住还要用命令hadoop dfs -rmr output/*output为你的输出文件夹路径*/把output文件夹删除。报错内容如下:
  

2.5 查看运行结果
  我们可以查看output文件夹的内容来检查程序是否成功创建文件夹,通过查看output文件里面的part-r-00000文件的内容来检查程序执行结果:



hadoop fs -cat /home/hadoop/output/part-r-00000

  正常显示结果会像如下样式一样:



hadoop 1
hello 3
jave 1
world 1

  我们可以看到hadoop出现一次,hello出现3次,java出现一次,world出现一次,这跟预期是一样的,说明执行成功。
  
  



错误笔记

  1. 启动时发现莫名其妙的datanode没有启动。
  从logs日志中看到Incompatible namespaceIDs in /home/hadoop/tmp/hadoop_tmp,想起来这个文件夹是自己新建的,是不是伪分布式时在里面产生了垃圾?于是rm -rf然后mkdir重来了一次,想想不安全我再把其他的之前新建的文件夹全部重新按照这个方法操作了一次;最后-format然后./start-all.sh,搞定啦。Datanode、SecondaryNameNode、Jps、ResourceManager、NameNode全部启动。
  2. 其他N多错误
  我在运行中也出现过其他很多方面的错误,最有效且最快找到出错的方法就是查看log文件了,哪个地方没有正常开启,就去对应进程的.log文件查看。比较烦人的是.log文件内容是按照日期递增顺序进行写入内容的,意思就是你每次要查看最新的运行信息必须要往下翻翻翻。
  

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-85832-1-1.html 上篇帖子: 基于CentOS与VmwareStation10搭建hadoop环境 下篇帖子: Hadoop学习笔记—6.Hadoop Eclipse插件的使用
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表