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 | ssh linux102 |
- 把~/.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 | #JAVA_HOME |
sudo vim /etc/profile.d/hadoop.sh
输入下面内容并保存
1 | #HADOOP_HOME |
同步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 | <!-- 指定HDFS中NameNode的地址 --> |
- 配置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 | linux101 |
分发配置文件
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