本文作者作为接触Linux和Hadoop的超级小白,在配置过程中踩坑无数,这里将遇到的问题和解决方案总结如下。如有解释错误以及更好方法,还请多多指正,共同学习共同进步(呲牙笑)
$ sudo apt-get install ssh
$ sudo apt-get install pdsh
选择合适的镜像文件 Apache Download Mirrors,这几个镜像都可以,作者选择清华的镜像,并选择了hadoop-3.2.1版本,注意下载.tar.gz结尾的文件。
【版本选择时候一定要注意和其他平台的兼容问题!!最好去查一下官方文件,这里附上 HBase与Hadoop版本对应链接】
// 新建目录
$ mkdir /usr/hadoop
// 将下载好的.tar.gz文件移动到上述目录下
$ mv hadoop-3.2.1.tar.gz /usr/hadoop
// 解压文件
$ tar -zxvf hadoop-3.2.1.tar.gz
// 通过cd命令不断深入,找到etc目录下的Hadoop-env.sh文件(路径可能有区别)
$ cd /usr/hadoop/hadoop-3.2.1/etc/hadoop
// 编辑文件(利用gedit命令也可)
$ vi hadoop-env.sh
// 打开文件后,找到JAVA_HOME,将其前面的#去掉,并将路径调整本机JAVA路径
# set to the root of your Java installation
export JAVA_HOME=/usr/java/jdk1.8.0_261
//更改后关闭并保存:按Esc键后,输入 :wq
做完以上步骤,就可以开启Hadoop集群;其中包括三种模式:
本文仅介绍第二种伪分布式模式,其他配置可参考官方文档。
参考第四步,配置文件etc/hadoop/core-site.xml,增加如下内容:
fs.defaultFS
hdfs://localhost:9000
配置etc/hadoop/hdfs-site.xml文件:
dfs.replication
1
配置完成,官方文档会带大家查看一些配置情况,这里就提炼干货不多说了。接下来就是测试部分,各种迷幻问题也就来了。。。
(1) 格式化文件系统
$ bin/hdfs namenode -format
(2) 启动DataNode和NameNode
$ sbin/start-dfs.sh
(3) 通过浏览器查看NameNode和DataNode的情况
http://localhost:9870/
如果以上步骤都顺利进行,jps之后,显示均启动,那恭喜你完工了!!
然而理想丰满,现实残酷地让人想落泪。作者就遇到了各种各样的问题T_T
SHUTDOWN_MSG: Shutting down NameNode at ___
关于这个问题,感谢一篇博文的帮助,这里提供了很好的解决方案,可以参考原文。
#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root
SHUTDOWN_MSG: Shutting down DataNode at ___,且start-dfs.sh之后jps后没有DataNode,即DataNode节点启动失败
这个问题,同样感谢两篇博文的帮助,这里提供了很好的解决方案,可以参考原文1和参考原文2。
查看日志文件,发现有:
…
java.io.IOException: Incompatible clusterIDs in /tmp/hadoop-root/dfs/data: namenode clusterID = CID-c7037991-30b6-4ff1-a886-b9097304b43d; datanode clusterID = CID-5073d500-972a-4226-8831-fb082f72864c
…
问题描述
截取的第一行日志说明了datanode的clusterID 和 namenode的clusterID 不匹配。
解决方法:
至此,我们迎来了阶段性的胜利,庆祝撒花!遇到其他问题会再补充,希望大家都可以配置成功!!!