hadoop集群安装部署文档

  • 一、 系统环境配置
  • 1、修改主机名
  • 2、添加主机名映射
  • 3、创建集群管理用户,设置密码
  • 4、分配用户sudo权限
  • 5、创建用户文件存放及安装目录
  • 6、关闭防火墙
  • 7、安装jdk,配置jdk环境变量
  • 二、 Hadoop集群搭建
  • 1、安装hadoop,配置hadoop环境变量
  • 2、修改 hadoop-env.sh 文件
  • 3、执行本地模式wordcount案例
  • 4、克隆虚拟机
  • 5、修改网络配置及主机名,开启ssh免密登录
  • 6、修改hadoop配置文件
  • core-site.xml
  • Hdfs.site.xml
  • Yarn.site.xml
  • Mapred.site.xml


一、 系统环境配置

1、修改主机名

[root@localhost ~]# vim /etc/sysconfig/network
需重启后生效

2、添加主机名映射

[root@hadoop101 ~]# vim /etc/hosts

3、创建集群管理用户,设置密码

[root@hadoop101 ~]# useradd caobin
[root@hadoop101 ~]# passwd caobin

4、分配用户sudo权限

[root@hadoop101 ~]# vim /etc/sudoers

离线安装大数据hadoop集群 大数据hadoop集群搭建_集群

5、创建用户文件存放及安装目录

[root@hadoop101 ~]# su caobin
[caobin@hadoop101 ~]$ cd /opt/
[caobin@hadoop101 opt]$ sudo mkdir software
[caobin@hadoop101 opt]$ sudo mkdir module
[caobin@hadoop101 opt]$ sudo chown caobin:caobin module/ software/

6、关闭防火墙

[caobin@hadoop101 opt]$ sudo service iptables stop
[caobin@hadoop101 opt]$ sudo service iptables status

7、安装jdk,配置jdk环境变量

使用传输工具上传jdk的Linux压缩包到 software文件夹

[caobin@hadoop101 software]$ tar -zxvf jdk-8u144-linux-x64.tar.gz -C /opt/module/
[caobin@hadoop101 jdk1.8.0_144]$ sudo vim /etc/profile

在文件末尾追加下图代码

离线安装大数据hadoop集群 大数据hadoop集群搭建_部署_02

二、 Hadoop集群搭建

1、安装hadoop,配置hadoop环境变量

上传hadoop压缩包到software,解压到module文件夹

[caobin@hadoop101 software]$ tar -zxvf hadoop-2.7.2.tar.gz -C /opt/module/
[caobin@hadoop101 hadoop-2.7.2]$ sudo vim /etc/profile

离线安装大数据hadoop集群 大数据hadoop集群搭建_部署_03


启用并验证环境变量

[caobin@hadoop101 bin]$ source /etc/profile
[caobin@hadoop101 bin]$ java -version
[caobin@hadoop101 bin]$ hadoop version

2、修改 hadoop-env.sh 文件

[caobin@hadoop101 bin]$ cd /opt/module/hadoop-2.7.2/
[caobin@hadoop101 hadoop-2.7.2]$ cd etc/hadoop/
[caobin@hadoop101 hadoop]$ vim hadoop-env.sh

指定java安装路径

离线安装大数据hadoop集群 大数据hadoop集群搭建_部署_04

3、执行本地模式wordcount案例

[caobin@hadoop101 hadoop-2.7.2]$ hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.2.jar wordcount LICENSE.txt output

离线安装大数据hadoop集群 大数据hadoop集群搭建_hadoop_05

4、克隆虚拟机

用当前虚拟机,再克隆2台虚拟机

5、修改网络配置及主机名,开启ssh免密登录

修改克隆后的网络配置

[caobin@hadoop101 ~]$ ssh-keygen -t rsa
三次回车,生成密钥
[caobin@hadoop101 ~]$ ssh-copy-id hadoop002
分发公钥
分别在三台机器上执行

6、修改hadoop配置文件

hadoop-env.sh

# The java implementation to use.
export JAVA_HOME=/opt/module/jdk1.8.0_144

yarn-env.sh

# some Java parameters
export JAVA_HOME=/opt/module/jdk1.8.0_144
if [ "$JAVA_HOME" != "" ]; then
  #echo "run java in $JAVA_HOME"
  JAVA_HOME=$JAVA_HOME
fi

mapred-env.sh

export JAVA_HOME=/opt/module/jdk1.8.0_144

export HADOOP_JOB_HISTORYSERVER_HEAPSIZE=1000

export HADOOP_MAPRED_ROOT_LOGGER=INFO,RFA

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>

Hdfs.site.xml

<property>
		<name>dfs.replication</name>
		<value>3</value>
</property>

<property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>hadoop103: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>hadoop102</value>
</property>

<!-- 开启日志聚集功能-->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>

<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>

Mapred.site.xml

<!-- 指定mr运行在yarn上 -->
<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
</property>
<!-- 配置历史服务器 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop101:10020</value>
</property>
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop101:19888</value>
</property>

7、 分发配置文件

分发脚本,根据实际主机名更改脚本内容
使用scp 或者 rsync
此粗提供分发脚本参考

###########################
#!/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=101; host<104; host++)); do
        echo ------------------- hadoop$host --------------
        rsync -rvl $pdir/$fname $user@hadoop$host:$pdir
done
###########################
[caobin@hadoop101 hadoop-2.7.2]$ ~/bin/xsync.sh etc/hadoop/

8、 格式化namenode , 启动集群

[caobin@hadoop001 hadoop-2.7.2]$ hadoop namenode -format

启动集群, 根据实际主机ip更改 脚本内容!
一键启动hadoop集群脚本参考

#!/bin/bash

Usage="Usage : $0 (start|stop|status)"
if [ $# -lt 1 ];then
  echo $Usage
  exit 1
fi

behave=$1

if [ $behave == "start" ];then
  vstate="开始启动"
fi
if [ $behave == "stop" ];then
  vstate="开始关闭"
fi


if [ $behave == "status" ];then
  echo "===========查看hadoop102状态=========="
  ssh caobin@hadoop101 "jps"
  echo "===========查看hadoop103状态=========="
  ssh caobin@hadoop102 "jps"
  echo "===========查看hadoop104状态=========="
  ssh caobin@hadoop103 "jps"
 
else  
  echo "=========$vstate hdfs服务========"
  ssh caobin@hadoop101 "/opt/module/hadoop-2.7.2/sbin/$behave-dfs.sh"

  echo "=========$vstate yarn服务========"
  ssh caobin@hadoop102 "/opt/module/hadoop-2.7.2/sbin/$behave-yarn.sh"
fi
exit 0

启动后执行wordcount案例测试

50070 namenode web服务端口
8088 yarn及mapreduce 任务查看端口
19888 job日志查看端口