1、准备安装包
http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.8.1/hadoop-2.8.1.tar.gz
2、为集群服务器创建hadoop用户
useradd -m hadoop
passwd hadoop
设置hadoop用户为sudo权限:执行visudo,在该行root ALL=(ALL) ALL下添加hadoop ALL=(ALL) ALL保存后退出,并切换回hadoop用户
3、修改服务器host名称
sudo hostnamectl set-hostname master
其他从节点服务器的名称修改方式同上,自己定义名称。
4、修改域名映射
注释掉之前的内容,添加新的映射
192.168.186.129 master
192.168.186.128 slave1
192.168.186.130 slave2
5、设置集群间的ssh免密登陆,下面以master为例,其他从节点服务器类似
- 设置空密钥:ssh-keygen -t rsa -P ""
- 设置其他服务器使用密钥进行ssh登陆,包括自身服务器:ssh-copy-id -i ~/.ssh/id_rsa.pub 用户名@IP
6、关闭防火墙(否则服务器间通信会有问题)
sudo systemctl stop firewalld.service
sudo systemctl disable firewalld.service
7、搭建java环境,hadoop2.8.1需要jdk1.8环境支持,这里不再阐述jdk环境搭建方法
8、解压hadoop压缩包 tar -zxvf hadoop-2.8.1.tar.gz,切换到解压出来的/etc/hadoop/文件夹中
- 修改core-site.xml文件
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://master:9000</value>
</property>
<!-- 目录需提前创建-->
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hadoop/hadoop/hadoop-2.8.1/tmp</value>
</property>
</configuration>
- 修改hdfs-site.xml文件
<configuration>
<!-- 数据块副本数-->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<!-- 目录需提前创建-->
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/hadoop/hadoop-2.8.1/name</value>
</property>
<!-- 目录需提前创建-->
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/hadoop/hadoop-2.8.1/data</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
</configuration>
- 修改mapred-site.xml.template文件,修改完后复制一份命名为mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 历史服务器配置 -->
<property>
<name>mapreduce.jobtracker.http.address</name>
<value>master:50030</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
cp mapred-site.xml.template mapred-site.xml
- 修改yarn-site.xml文件
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
- 修改slaves文件,把从节点域名添加进文件中
9、将master的hadoop文件夹同步到其他从节点
scp -r hadoop-2.8.1/ hadoop@slave1:~/
scp -r hadoop-2.8.1/ hadoop@slave2:~/
10、配置环境变量,执行vi ~/.bashrc,添加以下内容
export HADOOP_HOME=/home/hadoop/hadoop/hadoop-2.8.1
export HADOOP_INSTALL=$HADOOP_HOME
export HADOOP_MAPRED_HOME=${HADOOP_HOME}
export HADOOP_COMMON_HOME=${HADOOP_HOME}
export HADOOP_HDFS_HOME=${HADOOP_HOME}
export YARN_HOME=${HADOOP_HOME}
export HADOOP_COMMON_LIB_NATIVE_DIR=${HADOOP_HOME}/lib/native
export PATH=$PATH:${HADOOP_HOME}/sbin:${HADOOP_HOME}/bin
执行source ~/.bashrc 使环境变量生效,每个服务器都执行上述操作
11、启动hadoop集群
- 在master节点根目录执行hadoop namenode -format、hdfs namenode -format 、start-all.sh命令
启动后在各节点执行jps可看到以下程序
浏览器打开masterIP:50070可看到集群状态页(新版默认端口是9870)
执行./sbin/mr-jobhistory-daemon.sh start historyserver可以启动历史服务器,在masterIP:19888查看mapreduce运行情况(新版默认端口是8088)
11、遇到问题
- 停止集群后重新启动时,jps命令发现slave集群的datanode 无法启动,进入slave的logs文件夹,查看 $tail -n 100 hadoop-hadoop-datanode-slave.log
解决方案:
执行hdfs namenode -format -clusterId CID-c6a5b7a3-fc3e-43b5-b198-81d1e7bb4153 (把datanode 的 clusterID再用命令格式化一次)