Centos7.5搭建Hadoop2.7.7完全分布式集群部署
一、安装之前准备工作
1.整体规划
系统版本:Centos7.5 hadoop-2.7.7 (因为spark使用的是该版本,为了后续扩展spark)jdk 1.8
节点配置:
10.106.145.181 ——master01.hadoop
10.106.145.182 ——slave01.hadoop
10.106.145.183 ——slave02.hadoop
2. 创建客户hadoop(三台机器都创建相同客户 root账户执行)
useradd hadoop
passwd hadoop
开sudo权限
vi /etc/sudoers
hadoop ALL=(root) NOPASSWD:ALL
3. 配置hosts文件,使3台客户机能够以主机名相互访问(root账户执行)
3台机器都需要这样配置
vi /etc/hosts
10.106.145.181 master01.hadoop
10.106.145.182 slave01.hadoop
10.106.145.183 slave02.hadoop
# 将hosts文件传送给其它3台客户机
scp -r /etc/hosts root@Slaver-1:/etc
scp -r /etc/hosts root@Slaver-2:/etc
scp -r /etc/hosts root@Slaver-3:/etc
4. 为4台客户机配置jdk环境(不详细介绍网上搜索即可)
5. 关闭防火墙,SELinux
[root@Master ~]# systemctl stop firewalld
# 禁止开机启动,输出如下,则表示禁止成功
systemctl disable firewalld
5. 设置SSH免密钥 (不详细介绍网上搜索即可 注意这里使用hadoop进行ssh免密 不是root账户)
二、安装hadoop集群
注意只有第1步是使用root账户操作,其它都使用hadoop用户进行操作
1. hadoop安装目录(root账户操作)
为了统一管理,我们将hadoop的安装路径定为/usr/local/hadoop-2.7.7下,创建目录后,我们将hadoop二进制文件解压至这个目录下。
tar -zxvf hadoop-2.7.7.tar.gz -C /usr/local/
将权限授予hadoop账户
chown -R hadoop:hadoop /usr/local/hadoop-2.7.7
2.创建文件夹(hadoopyoghurt)
cd /usr/local/hadoop-2.7.7/
mkdir tmp
mkdir hdfs
mkdir hdfs/data
mkdir hdfs/name
3. 配置core-site.xml
配置core-site.xml 数据/usr/local/hadoop-2.7.7/etc/hadoop目录下
fs.defaultFS
hdfs://10.106.145.181:9000
hadoop.tmp.dir
file:/usr/local/hadoop-2.7.7/tmp
io.file.buffer.size
131072
4. 配置hdfs-site.xml
dfs.replication
3
dfs.namenode.name.dir
file:/usr/local/hadoop-2.7.7/hdfs/name
dfs.datanode.data.dir
file:/usr/local/hadoop-2.7.7/hdfs/data
dfs.namenode.http-address
master01.hadoop:50070
dfs.namenode.secondary.http-address
master01.hadoop:50090
dfs.webhdfs.enabled
true
dfs.permissions
false
5. 配置yarn-site.xml
yarn.nodemanager.aux-services
mapreduce_shuffle
yarn.nodemanager.aux-services.mapreduce.shuffle.class
org.apache.hadoop.mapred.ShuffleHandler
yarn.resourcemanager.address
master01.hadoop:8032
yarn.resourcemanager.scheduler.address
master01.hadoop:8030
yarn.resourcemanager.resource-tracker.address
master01.hadoop:8031
yarn.resourcemanager.admin.address
master01.hadoop:8033
yarn.resourcemanager.webapp.address
master01.hadoop:8088
yarn.nodemanager.resource.memory-mb
1024
yarn.resourcemanager.hostname
master01.hadoop
yarn.resourcemanager.address:
ResourceManager对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等。
yarn.resourcemanager.scheduler.address:
调度器地址,是ResourceManager对ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等。
yarn.resourcemanager.resource-tracker.address:
ResourceManager对NodeManager暴露的地址。NodeManager通过该地址向RM汇报心跳,领取任务等。
yarn.resourcemanager.admin.address:
ResourceManager对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等。
yarn.resourcemanager.webapp.address:
ResourceManage对外WebUI地址。用户可通过该地址在浏览器中查看集群各类信息。
yarn.nodemanager.resource.memory-mb:
NodeManage总的可用物理内存,不能小于1024。注意 该参数一旦设置,整个运行过程中不可动态修改。
5. 配置mapred-site.xml
mapreduce.framework.name
yarn
mapreduce.jobhistory.address
master01.hadoop:10020
mapreduce.jobhistory.webapp.address
master01.hadoop:19888
7. 配置slaves文件
这里是指定那些是slave机器,因为我们只有3台机器而复制数量设置的3,所有也把master作为slave来用
vim slaves
master01.hadoopslave01.hadoopslave02.hadoop
8. ,指定JAVA_HOME
vim hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_212-amd64
9. 配置yarn-env.sh,指定JAVA_HOME
vi yarn-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_212-amd64
10. 配置mapred-env.sh,指定JAVA_HOME
vi mapred-env.sh
export JAVA_HOME=/usr/java/jdk1.8.0_212-amd64
11. 将hadoop文件分发到其它几台客户机上
从master01上将配置好的文件发送到另外两台机器上
scp -r /usr/local/hadoop-2.7.7 hadoop@slave01.hadoop:/home/hadoop/
scp -r /usr/local/hadoop-2.7.7 hadoop@slave02.hadoop:/home/hadoop/
然后登录另外两台上去迁移文件到 /user/local目录下去
sudo mv hadoop-2.7.7 /usr/local/
三、启动并验证hadoop集群
1. 配置/etc/profile(root账户操作)
使用root账户分别在所有机器上操作环境变量
vi /etc/profile
export JAVA_HOME=/usr/java/jdk1.8.0_212-amd64
export HADOOP_HOME=/usr/local/hadoop-2.7.7
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib:$HADOOP_COMMON_LIB_NATIVE_DIR"
export LD_LIBRARY_PATH=$HADOOP_HOME/lib/native
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
生效
source /etc/profile
2.格式化namenode(以下都是使用hadoop用户操作)
cd /usr/local/hadoop-2.7.7/sbin/
hdfs namenode -format
启动hdfs
./start-dfs.sh
然后 jps:
在主服务器上 有 NameNode SecondNameNode
在从服务器上有 DateNode
我们也可以使用 hdfs dfsadmin -report 在主服务器上进行验证
hdfs dfsadmin -report
然后在启动 yarn 程序
./start-yarn.sh
yarn 有两个进程 一个是 ResourceManager 和 NodeManager
3. web验证
至此,我们的集群就已完全启动起来了,我们可以通过访问web页面,来做最后一步验证。我们已将web页面配置在Master主机上,因此,我们访问http://10.106.145.181:50070/,页面显示如下: