重要的点包含以下
1、集群数量的选择,除了hadoop集群,大部分集群采用的都是奇数个节点,这样可以方便选举出来主节点
2、既然是多个节点,节点之间的通信也十分重要
3、配置hdfs、yarn、mapreduce。也就是确定节点的NameNode、DataNode、SecondaryNameNode、ResourceManager、NodeManager
一、单个节点的搭建
采用先搭好一台节点,然后通过这台节点克隆出其他节点
1、安装JDK以及Hadoop,需要在/etc/profile这个文件里面配好环境变量,类似于windows
export JAVA_HOME=/opt/modules/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
export HADOOP_HOME=/opt/modules/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin
2、设置静态IP
/etc/sysconfig/network-scripts/ifcfg-ens33
在该文件里添加内容
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.101.xxx
NETMASK=255.255.255.0
GATEWAY=192.168.101.2
DNS1=144.144.144.144
DNS2=8.8.8.8
3、修改一下主机名
/etc/hostname
hadoop101
二、克隆出其他2台节点
注意的是,其他2台节点也要设置静态IP并且修改掉主机名
三、3台节点间相互通信
1、关闭3台节点的防火墙
systemctl stop firewalld
2、可以通过IP来实现3个节点间的相互通信,但是为了便于操作,还是通过主机名来实现通信比较好,在/etc/hosts文件中添加主机名和IP的对应关系
3、可以通过scp或者xsync命令实现各个节点间文件的相互传送,但是每次输入命令的时候都需要敲入密码,可以配置SSH免密登录。
进入节点的user/.ssh目录(.ssh是隐藏目录,可以通过ls -al来查看)
ssh-keygen -t rsa,生成一对儿公钥和私钥。
将公钥复制到每个节点上面
ssh-copy-id 每个节点的主机名
注:上述操作每个节点都需要执行一次
四、配置hdfs、yarn、mapreduce
1、核心配置文件 core-site.xml
<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop101:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>
2、配置hdfs
hadoop-env.sh文件中添加$JAVA_HOME变量
export JAVA_HOME=/opt/modules/jdk1.8.0_144
hdfs-site.xml添加如下内容
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop103:50090</value>
</property>
3、配置yarn
yarn-env.sh文件中添加$JAVA_HOME变量
export JAVA_HOME=/opt/modules/jdk1.8.0_144
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>
4、配置mapreduce
mapred-env.sh文件中添加$JAVA_HOME变量
export JAVA_HOME=/opt/modules/jdk1.8.0_144
mapred-site.xml添加下面内容
<!-- 指定MR运行在Yarn上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
五、集群分脚本
通过rsync命令实现101节点到102、103节点的同步
#!/bin/bash
#1 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
#2 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
#3 获取当前用户名称
user=`whoami`
#4 循环
for((host=102; host<104; host++)); do
rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done
这样通过脚本就可以将101节点上的文件同步复制到102和103节点
六、集群启动
1、单点启动
先在101上面启动namenode
sbin/hadoop-daemon.sh start namenode
在101、102、103上面启动datanode
sbin/hadoop-daemon.sh start datanode
2、一般都是采用群启集群
在101上面编辑slaves文件,添加内容
hadoop101
hadoop102
hadoop103
通过脚本同步文件
xsync /opt/modules/hadoop-2.7.2/slaves
注:第一次启动前最好格式化一下各个节点(bin/dfs namenode -format)
启动hdfs
sbin/start-dfs.sh
启动yarn
sbin/start-yarn.sh