Linux Ubuntu 16.04安装Hadoop全过程(二) --伪分布式
总阅读797次
本文承接上文,Linux Ubuntu 16.04安装Hadoop全过程(一),前文实践了单机模式的配置,此文实现伪分布式模式的配置(非YARN)。
之前遇到的问题
先说一下遇到的一个问题。
1.之前添加hadoop用户失败了,/home目录下没有hadoop目录,但是由于并没用到hadoop而是继续用自己的账户,所以没有发觉,后来转换到hadoop去登录,输入正确的账号密码后,黑下屏马上就回到了原来登录前的界面,也就是出现了循环登录的问题,查看了网上的一些解决方案,大致是要需要找到/home/user(user指的是用户名)下的.xsession-errors文件,但是此时问题来了,突然发现/home下没有hadoop目录,所以找到解决方法。一个原因是添加用户的姿势不对,Linux各发行版会有差异,比如上篇文章那样添加则可以成功,这个问题需要好好研究一下。hadoop-9
伪分布式模式配置
上一篇文章讲述了在Ubuntu下安装Hadoop的过程,以及单机模式的配置和测试,最终测试成功。
上篇文章的配置沿用下来,再修改两个文件:
1./usr/local/hadoop/etc/hadoop/core-site.xml
原本此文件中只有如下内容:
1 | <configuration> |
添加内容使成为:
1 | <configuration> |
2./usr/local/hadoop/etc/hadoop/hdfs-site.xml
原本也是空的,添加内容使成为:
1 | <configuration> |
即可。
注意,如果要变回单机模式,清空
<configuration>
标签中的内容即可。
且如果不是以YARN模式启动的话,无需配置mapred-site.xml。
启动
1.格式化namenode
在/usr/local/hadoop下以用户hadoop的身份执行:
1 | $ ./bin/hdfs namenode -format |
hadoop-7
看到如上的提示说明格式化namenode成功了。
2.启动服务
如上,执行
1 | $ ./sbin/start-dfs.sh |
然后用jps命令来判断是否启动成功,结果只显示:
1 | hadoop@ubuntu:/usr/local/hadoop$ jps |
没有Datanode和Namenode,说明配置不成功。
针对这种情况,依次运行如下命令,最后启动成功:
1 | $ ./sbin/stop-dfs.sh # 关闭dfs |
3.注: jps命令’command not found’的错误解决:
jps命令是jdk自带的,找不到命令说明极有可能是环境变量出了问题,用echo $PATH
查看环境变量,果然什么都没有,说明.bashrc中可能没有配置,果然发现,之前配置的.bashrc是root用户的配置文件,在hadoop用户的根目录还需要配置一遍。即打开.bashrc文件,在最后加入如下几行:
1 | export JAVA_HOME=/usr/jdk/jdk1.8.0_101 |
然后source .bashrc
保存即可。
此时jps命令启动正常。
4.启动成功后可打开http://localhost:50070查看namenode和datanode或者DFS的信息。hadoop-12
伪分布式模式测试
单机模式直接读取的是本地文件,如input目录和output目录,而伪分布式模式需要读取分布式文件系统HDFS中的文件,所以还得先建立HDFS。
1 | $ ./bin/hdfs dfs -mkdir -p /user/hadoop # 在HDFS中创建用户目录 |
注意,我们创建了/user/hadoop用户目录,又使用的是hadoop用户,所以直接用相对路径input即可表示/user/hadoop/input。
然后执行一个筛出dfs开头的单词的程序:
其中./bin/hadoop jar
向集群提交作业grep
是Hadoop提供的一个示例程序。
hadoop提供的示例程序如下:(0.19版本)hadoop-17
1 | $ ./bin/hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+' |
然后查看输出,此时输出仍在HDFS中。
1 | $ ./bin/hdfs dfs -cat output/* |
可以将HDFS中的文件拷到本地
1 | $ ./bin/hdfs dfs -get output ./output |
hadoop-15
注意第二次运行的时候需要删除HDFS中的output,否则会报错,因为此中有防止覆盖的机制,不会让你在不知情的情况下就覆盖掉上一个output,所以需要移走或者删除上一个output。
最后所有程序运行结束后运行./sbin/stop-dfs.sh
停止守护进程即可。
WordCount测试
下面还是进行一下WordCount单词统计程序的测试。
先删除HDFS中的output目录:
1 | $ ./bin/hdfs dfs -rm -r output |
然后如同单机模式中运行WordCount程序一样,运行:
1 | $ bin/hadoop jar share/hadoop/mapreduce/sources/hadoop-mapreduce-examples-2.7.3-sources.jar org.apache.hadoop.examples.WordCount input output |
最后查看结果如下:hadoop-16
移入的几个xml中(并非全部),总共有302个“单词”,每个单词的词频统计都在文件中汇总。
至此运行成功,伪分布式系统配置完毕。
下一步的工作
1.探索YARN模式
2.MapReduce程序的设计与实现(WordCount)