Hadoop之集群搭建
准备环境
三台linux服务器:系统:双核CPU,CentOS6.8、内存:4G、硬盘:50G+
服务器对应的hostname和IP地址
hostname | ip |
---|---|
linux101 | 192.168.1.101 |
linux102 | 192.168.1.102 |
linux103 | 192.168.1.103 |
集群规划:
linux101 | linux102 | linux103 |
---|---|---|
DataNode | DataNode | DataNode |
NodeManager | NodeManager | NodeManager |
NameNode | ||
ResourceManager | ||
JobHistoryServer | ||
hadoop使用2.7.2版本,下载地址, 安装包名为hadoop-2.7.2.tar.gz |
||
JDK使用jdk8_144版本,下载地址, 安装包名为jdk-8u144-linux-x64.tar.gz |
||
使用root用户登录linux101 | ||
依次配置三台服务器的/etc/hosts | ||
vim /etc/hosts |
1 | 192.168.1.101 linux101 |
创建用户
在三台服务器各创建一个普通用户mapan,并配置密码useradd mapan
passwd 123456
配置这个用户为sudoersvim /etc/sudoers
在root ALL=(ALL) ALL
一行下面
添加mapan ALL=(ALL) NOPASSWD:ALL
保存时wq!强制保存
在/opt目录下创建两个文件夹module和software,并把所有权赋给mapan
1 | mkdir /opt/module /opt/software |
创建分发脚本
以下使用mapan用户登录
1 | sudo vim /bin/xsync |
内容如下:
1 |
|
创建群呼脚本
1 | sudo vim /bin/xcall |
输入下面内容并保存
1 |
|
赋执行权限,分发上面的脚本
1 | sudo chmod +x /bin/xsync /bin/xcall |
配置免密登陆
- 生成密钥对
ssh-keygen -t rsa
三次回车 - 发送公钥到本机
ssh-copy-id linux001
输入一次密码 - 分别ssh登陆一下所有虚拟机
1
2
3
4ssh linux102
exit
ssh linux103
exit - 把~/.ssh 文件夹发送到集群所有服务器
xsync ~/.ssh
关闭防火墙
关闭四台服务器的防火墙和SELINUX
查看防火墙状态
1 | service iptables status |
关闭防火墙
1 | service iptables stop |
关闭SELINUX
sudo vim /etc/selinux/config
修改SELINUX的属性为disable
1 | SELINUX=disabled |
分发config文件
sudo xsync /etc/selinux/config
重启三台服务器
安装jdk和hadoop
先在一台机器上安装Java和Hadoop,并配置环境变量,并分发到集群其他机器
准备安装文件jdk-8u144-linux-x64.tar.gz
hadoop-2.7.2.tar.gz
拷贝安装文件到
/opt/software
,两个tar包tar -zxvf /opt/software/hadoop-2.7.2.tar.gz -C /opt/module
tar -zxvf /opt/software/jdk-8u144-linux-x64.tar.gz -C /opt/module
sudo vim /etc/profile.d/jdk.sh
输入下面内容并保存1
2
3
4#JAVA_HOME
export JAVA_HOME=/opt/module/jdk1.8.0_144
export PATH=$PATH:$JAVA_HOME/bin
# 注: jdk1.7及之前需要配置classpath变量,1.7之后不需要sudo vim /etc/profile.d/hadoop.sh
输入下面内容并保存1
2
3#HADOOP_HOME
export HADOOP_HOME=/opt/module/hadoop-2.7.2
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin同步JDK和hadoop的安装文件
xsync /opt/module
同步环境变量的配置文件
sudo xsync /etc/profile.d/jdk.sh /etc/profile.d/hadoop.sh
使三台服务器的环境变量生效
xcall source /etc/profile
配置hadoop
所有配置文件都在$HADOOP_HOME/etc/hadoop
一共有8个文件需要配置:
*-env.sh | *-site.xml |
---|---|
hadoop-env.sh | hdfs-site.xml |
yarn-env.sh | yarn-site.xml |
mapred-env.sh | mapred-site.xml |
core-site.xml |
最后一个是slaves文件。
首先配置
hadoop-env.sh
,yarn-env.sh
,mapred-env.sh
文件,配置JAVA_HOME
在每个文件第二行添加export JAVA_HOME=/opt/module/jdk1.8.0_144
配置Core-site.xml
1
2
3
4
5
6
7
8
9
10
11<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://linux101:9000</value>
</property>
<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/module/hadoop-2.7.2/data/tmp</value>
</property>配置hdfs-site.xml
1 | <!-- 数据的副本数量 --> |
- 配置yarn-site.xml
1 | <!-- Site specific YARN configuration properties --> |
- 配置mapred-site.xml
1 | <property> |
启动历史服务器的命令:mr-jobhistory-daemon.sh start historyserver
配置slaves文件
注意slaves文件不要有空格,不要有空行。1
2
3linux101
linux102
linux103分发配置文件
xsync /opt/module/hadoop-2.7.2/etc
在linux001上格式化Namenode
hdfs namenode -format
启动hdfs
start-dfs.sh
在配置了Resourcemanager机器linux002上启动yarn
start-yarn.sh
编写hadoop脚本
每次开集群都需要单个执行上面脚本,于是可以编写一个集群启动/停止脚本
1 | cd ~/ |
输入下面内容并保存
1 |
|
给予执行权限chmod +x hdp
以后每次开启集群只需要 执行 hdp start
关闭集群只需要hdp stop