Apache Hadoop 集群部署

一、部署规划
1、部署环境
  • 各部署单元的软件部署情况如下:
主机名
IP地址
应用名称
版本
备注
master60
192.168.9.60
Namenode
hadoop2.7.3
主节点
ResourceManager
SecondaryNameNode
slave61
192.168.9.61
DataNode
hadoop2.7.3
数据节点
NodeManager
slave62
192.168.9.62
JobHistoryServer
hadoop2.7.3
数据节点

历史服务器
NodeManager
DataNode
slave63
192.168.9.63
NodeManager
hadoop2.7.3
数据节点
DataNode

二、环境准备
1、修改主机名
[root@VM1 ~]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=master60
[root@VM2 ~]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=slave61
[root@VM3 ~]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=slave62
[root@VM4 ~]# vim /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=slave63

2、配置网络映射
  • 所有主机执行
# vim /etc/hosts
192.168.9.60 master60
192.168.9.61 slave61
192.168.9.62 slave62
192.168.9.63 slave63

3、关闭防火墙
  • 所有主机执行
# service iptables stop && chkconfig iptables off && chkconfig --list | grep iptables

4、禁用selinux
  • 所有主机执行
# vi /etc/selinux/config
SELINUX=disabled

5、禁用IPv6
  • 所有主机执行
# echo " " >> /etc/modprobe.d/dist.conf
# echo "alias net-pf-10 off" >> /etc/modprobe.d/dist.conf
# echo "alias ipv6 off" >> /etc/modprobe.d/dist.conf

6、重启
  • 所有主机执行
# reboot

7、配置ssh无秘钥登录
  • 主机master60上执行
7.1、生产公钥和私钥
# ssh-keygen
7.2、拷贝公钥给目标服务器
# ssh-copy-id -i master60
# ssh-copy-id -i slave61
# ssh-copy-id -i slave62
# ssh-copy-id -i slave63

8、集群时间同步
8.1、启动ntpd服务
  • 所有主机执行
# service ntpd start && chkconfig ntpd on && chkconfig --list | grep ntpd

8.2、更新时间
  • 主机master60上执行
# ntpdate -u ntp.sjtu.edu.cn

8.3、将系统时间同步给本机硬件时间
  • 主机master60上执行
# hwclock --localtime
# hwclock --localtime -w

8.4、硬件时间自动同步给系统时间
  • 主机master60上执行
# vi /etc/sysconfig/ntpd
SYNC_HWCLOCK=yes

8.5、系统时间自动更新 硬件时间
  • 主机master60上执行
# vi /etc/sysconfig/ntpdate
SYNC_HWCLOCK=yes

8.6、时间进行更新并同步至集群其它主机
  • 主机master60上执行
# ntpdate -u slave61
# ntpdate -u slave62
# ntpdate -u slave63

8.7、重启ntpd服务
  • 所有主机执行
# service ntpd restart && service crond restart

9、设置用户的可打开最大文件数及进程数
  • 所有主机执行
# vi /etc/security/limits.conf
# soft 软指标 ,给警告
# hard 硬指标 ,直接停止
* soft nofile 32728
* hard nofile 1024567
* soft nproc 65535
* hard nproc unlimited
* soft memlock unlimited
* hard memlock unlimited

10、创建一个Hadoop专用的普通用户
  • 所有主机执行
10.1、创建hadoop用户并修改密码
# useradd hadoop
# passwd hadoop

10.2、创建hadoop组,并将hadoop用户加入hadoop组
# groupadd hadoop
# usermod -a -G hadoop hadoop

10.3、创建工作目录
# mkdir /apps && cd /apps && mkdir lib logs run sh sharedstorage svr
# chown -R hadoop:hadoop /apps/*

###################### 后续操作转hadoop用户 ######################

三、Hadoop集群部署
1、JDK安装

1.1、创建JDK工作目录
  • 所有主机执行
$ mkdir -p /apps/svr/java/

1.2、上传解压JDK软件并拷贝至集群其它主机
  • 主机master60上执行
$ tar -zxvf ~/jdk-8u172-linux-x64.tar.gz -C /apps/svr/java/
$ scp -r /apps/svr/java/jdk1.8.0_172/ slave61:/apps/svr/java/
$ scp -r /apps/svr/java/jdk1.8.0_172/ slave62:/apps/svr/java/
$ scp -r /apps/svr/java/jdk1.8.0_172/ slave63:/apps/svr/java/

1.3、配置JDK环境变量
  • 所有主机执行
$ vim ~/.bash_profile
# JAVA_HOME
export JAVA_HOME=/apps/svr/java/jdk1.8.0_172
export CLASSPATH=.:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar
export PATH=$PATH:$JAVA_HOME/bin

1.4、立即生效
  • 所有主机执行
$ source ~/.bash_profile


2、部署Hadoop

2.1、部署准备
  • 主机master60上执行
a、创建hadoop工作目录,上传解压hadoop软件
$ mkdir -p /apps/svr/hadoop/
$ cd /apps/svr/hadoop/ && mkdir conf data1 data2 lib logs run
$ mkdir -p /apps/svr/hadoop/data1/dfs/dn /apps/svr/hadoop/data2/dfs/dn /apps/svr/hadoop/data1/dfs/nn /apps/svr/hadoop/data2/dfs/nn
$ tar -zxvf ~/hadoop-2.7.3.tar.gz -C /apps/svr/hadoop/

b、配置hadoop-env.sh
$ vim /apps/svr/hadoop/hadoop-2.7.3/etc/hadoop/hadoop-env.sh
export JAVA_HOME=/apps/svr/java/jdk1.8.0_172/

2.2、部署HDFS
  • 主机master60上执行
a. 配置core-site.xml
$ vim /apps/svr/hadoop/hadoop-2.7.3/etc/hadoop/core-site.xml
<configuration>
<!-- 设置NameNode运行的主机 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master60:9000</value>
</property>

<!-- hadoop文件系统依赖的基础配置 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/apps/svr/hadoop/run/</value>
</property>

<!-- hadoop的用户代理机制 -->
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>
</configuration>


b. 配置hdfs-site.xml
$ vim /apps/svr/hadoop/hadoop-2.7.3/etc/hadoop/hdfs-site.xml
<configuration>
<!-- datanode数据保存路径 -->
<property>
<name>dfs.datanode.data.dir</name>
<value>/apps/svr/hadoop/data1/dfs/dn,/apps/svr/hadoop/data2/dfs/dn</value>
</property>

<!-- namenode所使用的元数据保存路径 -->
<property>
<name>dfs.namenode.name.dir</name>
<value>/apps/svr/hadoop/data1/dfs/nn,/apps/svr/hadoop/data2/dfs/nn</value>
</property>

<!-- hdfs数据块的复制份数 -->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>

<!-- dfs权限是否打开 -->
<property>
<name>dfs.permissions</name>
<value>true</value>
</property>
</configuration>


c. 配置slaves,设置DataNode运行的主机
$ vim /apps/svr/hadoop/hadoop-2.7.3/etc/hadoop/slaves
slave61
slave62
slave63

2.3、部署YARN
  • 主机master60上执行
a. 配置yarn-site.xml
$ vim /apps/svr/hadoop/hadoop-2.7.3/etc/hadoop/yarn-site.xml
<configuration>
<!-- ResourceManager对客户端暴露的地址 -->
<property>
<name>yarn.resourcemanager.address</name>
<value>master60:8032</value>
</property>

<!-- ResourceManager对ApplicationMaster暴露的访问地址 -->
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>master60:8030</value>
</property>

<!-- ResourceManager对NodeManager暴露的地址 -->
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master60:8031</value>
</property>

<!-- ResourceManager对管理员暴露的访问地址 -->
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>master60:8033</value>
</property>

<!-- ResourceManager对外web ui地址 -->
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master60:8038</value>
</property>

<!-- mapreduce中间需要经过shuffle过程 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>


b. 配置mapred-site.xml
$ vim /apps/svr/hadoop/hadoop-2.7.3/etc/hadoop/mapred-site.xml
<configuration>
<!-- mapreduce运行在yarn平台上 -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>


2.4、拷贝hadoop
  • 主机master60上执行
$ scp -r /apps/svr/hadoop/ slave61:/apps/svr/
$ scp -r /apps/svr/hadoop/ slave62:/apps/svr/
$ scp -r /apps/svr/hadoop/ slave63:/apps/svr/

2.5、配置hadoop环境变量
  • 所有主机执行
$ vim ~/.bash_profile
# HADOOP_HOME
export HADOOP_HOME=/apps/svr/hadoop/hadoop-2.7.3
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib/native"
export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:$HADOOP_HOME/share/hadoop/tools/lib/*
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
  • 立即生效
$ source ~/.bash_profile

2.6、启动测试hadoop
  • 主机master60上执行
a. 格式化
$ hadoop namenode -format

b. 启动
$ start-dfs.sh
$ start-yarn.sh

c. 检查启动结果
$ yarn node -list

d. WEB UI验证

2.7、历史服务器(88主机)
  • 主机master62上执行
a. 配置mapred-site.xml
$ cd /apps/svr/hadoop/hadoop-2.7.3/etc/hadoop/
$ vim mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>192.168.9.62:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>192.168.9.62:19888</value>
</property>
<property>
<name>mapreduce.jobhistory.done-dir</name>
<value>${yarn.app.mapreduce.am.staging-dir}/history/done</value>
</property>
<property>
<name>mapreduce.jobhistory.intermediate-done-dir</name>
<value>${yarn.app.mapreduce.am.staging-dir}/history/done_intermediate</value>
</property>
<property>
<name>yarn.app.mapreduce.am.staging-dir</name>
<value>/tmp/hadoop-yarn/staging</value>
</property>
</configuration>


b. 启动历史服务器
$ mr-jobhistory-daemon.sh start historyserver

C. WEB UI验证

猜你喜欢

转载自blog.csdn.net/volitationLong/article/details/80285123