- 使用的是三台云服务器,两台腾讯云,一台华为云,使用的系统为centos6.8
- 遇到的坑有点多,所以记录下来,防止自己忘记,也给大家一个参考
前期准备
hadoop和jdk的tar解压
jdk和hadoop的环境变量配置
vim /etc/profile
##JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
#export JAVA_HOME=/opt/module/jdk-11
#export PATH=$PATH:$JAVA_HOME/bin
##HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
- 特别注意的:在/etc/hosts设置本地解析时,本机云服务器设置为内网ip,其他为公网ip
为了同时更新方便,可使用集群的脚本文件执行 - 创建一个xsync的shell文件
#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#4 获取当前用户名称
user=`whoami`
#5 循环
for((host=103; host<105; host++)); do
echo ------------------- hadoop$host --------------
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done
集群配置
添加jdk环境的文件
hadoop-env.sh
yarn-env.sh
mapred-env.sh
core-site.xml
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop102:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop104:50090</value>
</property>
yarn-site.xml
<!-- Reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>
mapred-site.xml
<!-- 指定MR运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
格式化namenode
hadoop namenode -format
SSH无密登陆配置
- 生产公钥和私钥
ssh-keygen -t rsa
- 将公钥拷贝到需要免密的服务器
ssh-copy-id [服务器ip]
记得设置slaves文件,同步配置
集群启动
hdfs启动 / 关闭
start-dfs.sh / stop-dfs.sh
yarn启动 / 关闭
start-yarn.sh / stop-yarn.sh