更新于2018-09-25
上周因为硬盘空间不够,准备迁移Hadoop集群测试虚拟机,结果Master节点误操作,网络被我搞坏了。
死活连接不上去,一气之下,重新装了一个Master机器。
单纯的重新安装Master节点,想继续使用这个集群,是不可取的,需要将整个集群全部卸载,重新配置才行。
各位童鞋,如果本地安装集群,一定要准备充足的硬盘空间。
------------------------------以下为原文-----------------------------------
之前搭建Hadoop集群花了很长时间,来回浪费了很多时间,记录分享给大家。
自己电脑是Win7的,内存16G(双通道8G),安装了VM虚拟机
在虚拟机上安装了Centos6.8 系统,然后安装了必要的工具,JDK、SSH、tree、unzip之类的工具。
一共准备了三台虚拟机,一台Master,两台slave。
废话不多说,上笔记...
这里默认服务器安装完成,JDK,SSH等工具全都安装完毕,下面主要记录配置信息。
机器列表:
IP | 角色 |
192.168.137.160 | master |
192.168.137.161 | slave |
192.168.137.162 | slave |
Host配置
host配置不多说,多台服务器之间连接必须的..
这下面的配置中,全部使用ip地址,不使用主机名
SSH信任配置
在master机器下执行
生成密钥
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
保存到authorized_keys中
cat /root/.ssh/id_rsa.pub >> /root/.ssh/authorized_keys
发送给slave机器的authorized_keys中
cat /root/.ssh/id_rsa.pub | ssh 192.168.137.161 'cat >> .ssh/authorized_keys'
cat /root/.ssh/id_rsa.pub | ssh 192.168.137.162 'cat >> .ssh/authorized_keys'
上面一套执行下来,master --> slave 之间的ssh信任就配置好了
然后slave --> master 之间的反向信任也是这样子。
环境变量配置
vim /etc/profile
#HADOOP
export HADOOP_HOME=/home/hadoop/hadoop-2.8.1 #这个是hadoop解压缩后的路径(安装路径)
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
export HADOOP_INSTALL=$HADOOP_HOME
source /etc/profile
验证,输入
hadoop version
注意:Master机器上配置好了之后,两台slave机器也要配置,反正hadoop安装路径都是一样的...
Hadoop配置信息
下面的配置信息,都是使用ip配置的,没有使用主机名
我这里用hadoop-2.8.1.tar.gz举例子
我的安装路径:/home/hadoop/hadoop-2.8.1
配置文件都在etc下面:/home/hadoop/hadoop-2.8.1/etc/hadoop
----------------------------------------------------------------------------------------------------
hadoop-env.sh
# The java implementation to use.
export JAVA_HOME=/home/tools/jdk/jdk1.8.0_40
yarn-env.sh
# some Java parameters
export JAVA_HOME=/home/tools/jdk/jdk1.8.0_40
slaves
192.168.137.160
192.168.137.161
192.168.137.162
这里将master和slave机器的ip全部配置上去
core-site.xml
<configuration>
<!-- 指定hdfs的nameservice为ns1 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://192.168.137.160:9000</value>
</property>
<!-- Size of read/write buffer used in SequenceFiles. -->
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<!-- 指定hadoop临时目录,自行创建 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-2.8.1/tmp</value>
</property>
</configuration>
hdfs-site.xm
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>192.168.137.160:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hadoop/hadoop-2.8.1/hdfs/namenode/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hadoop/hadoop-2.8.1/hdfs/datanode/dfs/data</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
mapred-site.xml
原目录下没有这个xml文件,我们复制一个
cp mapred-site.xml.template mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>192.168.137.160:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>192.168.137.160:19888</value>
</property>
</configuration>
yarn-site.xml
<configuration>
<!-- Site specific YARN configuration properties -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>192.168.137.160:8032</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>192.168.137.160:8030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>192.168.137.160:8031</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>192.168.137.160:8033</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>192.168.137.160:8088</value>
</property>
</configuration>
上面的配置好了之后,将/home/hadoop/hadoop-2.8.1 整个目录发送到slave机器的固定目录下
(建议master 和 slave hadoop安装的目录保持一致,方便配置)
scp -r hadoop-2.8.1 root@192.168.137.161:/home/hadoop/
scp -r hadoop-2.8.1 root@192.168.137.162:/home/hadoop/
hadoop启动
(配置环境变量之后,可以直接使用格式化命令)
hdfs namenode -format
start-all.sh
stop-all.sh
sh mr-jobhistory-daemon.sh start historyserver
hadoop job -list
验证
master节点
slave节点
http://192.168.137.160:8088/cluster/nodes
http://192.168.137.160:50070/dfshealth.html
参考资料: