作者:我才不要喜欢你了 | 来源:互联网 | 2023-01-28 19:34
一、背景
这件事做了N次,每次因为各种原因失败(比如,环境配置,hadoop参数设置),终于在春节前夕搞定。
主要流程参照TMH_ITBOY的文章进行,再结合个人需求进行调整。
在此记录和分享一下。
二、部署规划
三、流程
【Step 1】 VMware新建虚拟机
补充:
(1)VMware 15.0.3下载
(2)虚拟机存储位置改为如下(提前规划)
主机hadoop1: .\Virtual Machines\hadoops\hadoop1
主机hadoop2: .\Virtual Machines\hadoops\hadoop2
主机hadoop3: .\Virtual Machines\hadoops\hadoop3
主机hadoop4: .\Virtual Machines\hadoops\hadoop4
主机hadoop5: .\Virtual Machines\hadoops\hadoop5
(3)虚拟机内存除hadoop1外,其他设为1G(因为我的笔记本内存小)
【Step 2】为虚拟机安装CentOS 6.7 64位系统
补充:
(1)我选择的是CentOS-6.7-x86_64-bin-DVD1.iso
【Step 3】CentOS 6.7 网络配置等,及JDK的安装
补充:
(1)每个主机MAC地址(物理地址)会不一致,子网掩码和网卡地址是一致的;
(2)编辑网卡时,记得同时修改IPADDR(例子如下);(保存退出后,重启网关无效的话,关机重启试一下)
网关:192.168.93.2
原IP:192.168.93.120
修改跟网关在一个网段(有规律,方便记忆即可):hadoop1:192.168.93.121hadoop2:192.168.93.122hadoop3:192.168.93.123hadoop4:192.168.93.124hadoop5:192.168.93.125
(3)在Xshell中永久保存ssh连接窗口:Xshell-文件-打开(Xshell连接虚拟机时,记得虚拟机先手动开机)
【Step 4】虚拟机克隆,及Hadoop环境配置与安装
补充:
(1)hadoop配置文件(为了方便比较,这部分我会全部列出来)
# set JAVA_HOME in this file, so that it is correctly defined on
# remote nodes.# The java implementation to use.#在这里添加JDK安装目录的环境变量
export JAVA_HOME=/home/java/jdk1.7.0_79# The jsvc implementation to use. Jsvc is required to run secure datanodes
fs.defaultFShdfs://hadoop1:9000
hadoop.tmp.dir/home/hadoop/apps/hadoop-2.7.5/data
dfs.replication2
dfs.secondary.http.addresshadoop1:50090
- mapred-site.xml(将mapred-site.xml.template改成mapred-site.xml)
mapreduce.framework.nameyarn
yarn.resourcemanager.hostnamehadoop2
yarn.nodemanager.aux-servicesmapreduce_shuffle
hadoop3
hadoop4
hadoop5
(2)因为我的namenode(hadoop1)和resourcemanager(hadoop2)是物理分离的,所以在配置主机间的ssh免密通信时,不仅要配置hadoop1-->hadoop2,hadoop3,hadoop4,hadoop5,还要配置hadoop2-->hadoop1,hadoop3,hadoop4,hadoop5的;
(3)初始化HDFS的操作,只在需要在第一次使用时格式化即可。如果使用后多次格式化,会导致子节点的cluster_id跟主节点的cluster_id不一致,这时候就需要手动一个个修改。
【Step 5】启动集群
1. 启动HDFS
在namenode(hadoop1)上启动:start-dfs.sh 检查启动是否成功:hadoop dfsadmin -report # 都为0的话,肯定是异常查看进程:jps # 无对应的进程的话,说明启动失败
我遇到的问题及解决办法:
(1)namenode和datanode都启动失败(无进程):
临时打开防火墙:service iptables start
临时关闭防火墙:service iptables stop
查看防火墙状态:sudo service iptables status永久开启防火墙: chkconfig iptables on
永久关闭防火墙: chkconfig iptables off
(2)namenode启动成功,datanode启动失败(无进程)
- 只关了namenode的防火墙,没关datanode们的;
- 多次格式化hdfs,导致namenode和datanode们的cluster_id不一致:需要手动去修改datanode们的cluster_id
1.在namenode主机上(hadoop1),查看和记录namenode的clusterID:
cat /home/hadoop/apps/hadoop-2.7.5/data/dfs/name/current/VERSION2.分别切换到hadoop3、hadoop4、hadoop5,修改datanode上的clusterID,使其与datanode的一致:
vim /home/hadoop/apps/hadoop-2.7.5/data/dfs/data/current/VERSION
2. 启动YARN
在resourcemanager机器(hadoop2)上启动: start-yarn.sh检查进程:jps
【Step 6】使用wordcount进行测试
1.上传文件到HDFS
创建文件夹:hadoop fs -mkdir -p /wordcount/input
从本地上传文件至hdfs:hadoop fs -put /home/HADOOP/Downloads/words.txt /wordcount/input2.运行一个mapreduce程序
切换jar包路径:cd $HADOOP_HOME/share/hadoop/mapreduce/
跑mr程序:hadoop jar mapredcue-example-2.6.1.jar wordcount /wordcount/input /wordcount/output # /wordcount/output为输出路径,不需提前创建3.查看结果
hadoop fs -cat /wordcount/output/words.txt
四、其他
1.Hadoop命令手册