前提,虚拟机安装 见https://www.cnblogs.com/cxl-blog/p/11363183.html
一.按照https://blog.csdn.net/MastetHuang/article/details/51867115该步骤进行
其中有以下几个小问题
1.注意上述链接中的hadoop-2.6.4需要修改为自己的hadoop版本,同时,hdfs-site.xml和core-site.xml等配置文件的修改中的hadoop-2.6.4也应一并修改
2.配置文件还需作如下修改
vim /hadoop-3.1.2/etc/hadoop/core-site.xml
添加如下:
<configuration> <property> <name>fs.defaultFS</name>
<value>hdfs://localhost:9000 </value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop/tmp </value>
</property>
<property>
<name>hadoop.native.lib</name>
<value>true</value>
</property>
<configuration>
vim /data/hadoop/etc/hadoop/hdfs-site.xml
添加如下:
<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>/data/hadoop/hdfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>/data/hadoop/hdfs/data</value> </property> <property> <name>dfs.permissions</name> <value>false</value> </property> </configuration>
vim /data/hadoop/etc/hadoop/mapred-site.xml
添加如下:
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
vim /data/hadoop/etc/hadoop/yarn-site.xml
添加如下:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value> ##注意这里有坑 mapreduce.shuffle 链接符为.的时候有问题
</property>
</configuration>
3.修改JAVA_HOME 时记得把#去掉
export JAVA_HOME=/usr/local/jdk1.7.0_79
4.拷贝主机文件(hadoop)到虚拟机 在虚拟机中执行
scp 192.168.0.119:/home/cxl/Downloads/hadoop-3.1.2.tar.gz /home/cxl/ hadoop-3.1.2
其中 192.168.0.119为本机IP ,/home/hostname/为自己的路径
5.编辑profile文件一旦没有写正确,导致在命令行下 ls等命令不能够识别
在命令行下打入下面这段
export PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
6.主机无法ssh连接虚拟机,也ping不通
见https://blog.csdn.net/chengqiuming/article/details/83239413 设置好后在主机中执行
ssh 127.0.0.1 -p 2022
设置端口转发后主机监听本地2022端口,如果ssh -p 2022,就将ssh到虚拟机,所以是ssh 127.0.0.1
二.安装完后
1.创建文件夹(配置文件core-site.xml中hadoop.tmp.dir 设置的就是tmp)
cd /data/hadoop mkdir tmp cd tmp mkdir name data chmod -R 777 tmp
2.格式化
cd /hadoop-3.1.2/bin
hdfs namenode -format
3.启动hadoop
cd hadoop-3.1.2/sbin/
./start-all.sh
4.操作hdfs
确保在hadoop的bin目录下
cd /hadoop3.1.2/bin
hdfs dfs -mkdir /test
或
hadoop fs -mkdir /test
其他简单操作见https://blog.csdn.net/MESSI_JAMES/article/details/81174908
详情见官方文档http://hadoop.apache.org/docs/r1.0.4/cn/quickstart.html
后续:
1.datanode启动后自动关闭
解决方法:https://blog.csdn.net/a469142780/article/details/71312143
问题:Namenode上namespaceID与datanode上namespaceID不一致。
问题产生原因:每次namenode format会重新创建一个namenodeId,而tmp/dfs/data下包含了上次format下的id,namenode format清空了namenode下的数据,但是没有清空datanode下的数据,所以造成namenode节点上的namespaceID与datanode节点上的namespaceID不一致。启动失败。
解决方法:
(1)停掉集群服务
(2)在出问题的datanode节点上删除data目录,data目录即是在hdfs-site.xml文件中配置的dfs.data.dir目录,本机器上那个是/hadoop/hadoop-2.7.1/hdfs/dfs/data/ (注:在所有的datanode和namenode节点上均执行了该步骤。以防删掉后不成功,可以先把data目录复制一份)。
(3)格式化namenode.
(4)重新启动集群。
问题解决。
谨记:这种方法带来的一个副作用就是会造成hdfs上的所有数据丢失。