hadoop-3.1.3完全分布式保姆级搭建
Posted Ubuntu纯牛马
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hadoop-3.1.3完全分布式保姆级搭建相关的知识,希望对你有一定的参考价值。
本人搭建环境:
Ubuntu18.04
docker容器
1、基础环境建设
1.1 修改三台centos容器的主机名
[root@localhost ~]# hostnamectl set-hostname master
[root@localhost ~]# bash #刷新
[root@localhost ~]# hostnamectl set-hostname slave1
[root@localhost ~]# bash
[root@localhost ~]# hostnamectl set-hostname slave2
[root@localhost ~]# bash
三台主机名设置完成
1.2 修改hosts,添加映射,关闭防火墙
[root@master ~]# vi /etc/hosts
1.3 分发hosts到2个副节点
[root@master ~]# scp /etc/hosts root@slave1:/etc/hosts
[root@master ~]# scp /etc/hosts root@slave2:/etc/hosts
1.4 关闭防火墙
systemctl stop firewalld.service #关闭防火墙服务
systemctl disable firewalld.service #禁止防火墙开机启动
1.5 设置三台主机的免密登录
[root@master ~]# ssh-keygen -t rsa #然后一直回车
1.6 复制公钥到服务器
ssh-copy-id master
ssh-copy-id slave1
ssh-copy-id slave2
(另外两个节点也是如此操作,这里就不演示了)
1.7 JDK配置
解压文件到相应的位置:
[root@master ~]# tar -zxvf /opt/software/jdk-8u162-linux-x64.tar.gz -C /opt/module/
[root@master ~]# cd /opt/module/ #进入解压目录,可以给解压后的文件改个名字,方便记忆
[root@master module]# mv jdk1.8.0_162/ jdk
设置jdk环境变量:
[root@master module]# vi /etc/profile
在末尾添加如下配置:
#JAVA_HOME
export JAVA_HOME=/opt/module/jdk
export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin
刷新环境变量:
[root@master module]# source /etc/profile
配置完后即可查看jdk版本号:
[root@master module]# java -version
分发JDK和环境变量到两个副节点:
[root@master module]# scp /etc/profile slave1:/etc/profile
[root@master module]# scp /etc/profile slave2:/etc/profile
[root@master module]# scp -rq jdk/ slave1:/opt/module/
[root@master module]# scp -rq jdk/ slave2:/opt/module/
分发到两个副节点后,刷新环境变量,查看JAVA版本:
slave1节点:
slave2节点:
基础环境搭建完成!!
2、Hadoop环境搭建
前提:已完成3个节点的免密登录,jdk配置
2.1 解压包到相应位置:
[root@master module]# tar -zxvf /opt/software/hadoop-3.1.3.tar.gz -C /opt/module/
[root@master module]# mv hadoop-3.1.3/ hadoop #改一下名字,方便记忆
2.2 添加hadoop环境变量:
[root@master module]# vi /etc/profile
在末尾添加以下内容:
#HADOOP
export HADOOP_HOME=/opt/module/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export HADOOP_CLASSPATH=`$HADOOP_HOME/bin/hadoop classpath`
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
#备注:3.0后的版本有点那啥,不添加最下面这5条,启动hadoop集群时会报错
:wq 保存退出后,刷新环境变量:
[root@master module]# source /etc/profile
配置好后,即可直接查看hadoop 版本号
[root@master module]# hadoop version
2.3 修改core.site.xml hdfs-site.xml mapred-site.xml yarn-site.xml workers hadoop-env.sh 五个配置文件(主机名改成自己的)
2.3.1先进入配置目录
[root@master module]# cd hadoop/etc/hadoop/
[root@master hadoop]# ll
ll之后可以看到如下文件:
我们只用修改其中的5条
2.3.2 hadoop-env.sh配置:
[root@master hadoop]# vi hadoop-env.sh #告诉hadoop jdk在哪里
2.3.3 workers配置(根据自己的集群来进行配置):
[root@master hadoop]# vi workers
2.3.4 core.site.xml配置:
<configuration>
<!-- hdfs的地址名称:schame,ip,port-->
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<!-- hdfs的基础路径,被其他属性所依赖的一个基础路径 -->
<property>
<name>hadoop.tmp.dir</name>
<value>/root/hadoopdir/tmp</value>
</property>
</configuration>
2.3.5 hdfs.site.xml:
<configuration>
<!-- namenode守护进程管理的元数据文件fsimage存储的位置-->
<property>
<name>dfs.namenode.name.dir</name>
<value>/root/hadoopdir/dfs/name</value>
</property>
<!-- 确定DFS数据节点应该将其块存储在本地文件系统的何处-->
<property>
<name>dfs.datanode.data.dir</name>
<value>/root/hadoopdir/dfs/data</value>
</property>
<!-- 块的副本数-->
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<!-- 块的大小(128M),下面的单位是字节-->
<property>
<name>dfs.blocksize</name>
<value>134217728</value>
</property>
<!-- secondarynamenode守护进程的http地址:主机名和端口号。参考守护进程布局-->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<!-- namenode守护进程的http地址:主机名和端口号。参考守护进程布局-->
<property>
<name>dfs.namenode.http-address</name>
<value>master:50070</value>
</property>
<!--是否开通HDFS的Web接口,3.0以后默认端口是9870-->
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
</configuration>
2.3.6 mapred-site.xml:
<configuration>
<!-- 指定mapreduce使用yarn资源管理器-->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<!-- 配置作业历史服务器的地址-->
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<!-- 配置作业历史服务器的http地址-->
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
2.3.7 yarn-site.xml:
<configuration>
<!-- Site specific YARN configuration properties -->
<!-- NodeManager获取数据的方式shuffle -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<!-- yarn的web访问地址 -->
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.https.address</name>
<value>master:8090</value>
</property>
<!-- 开启日志聚合功能,方便我们查看任务执行完成之后的日志记录 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>
<!-- 设置聚合日志在hdfs上的保存时间 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>
</configuration>
以前hadoop 2.X 版本,访问web界面,hdfs端口号是50070,现在3.X版本,端口号是9870(最好自己指定端口号)
2.4 配置好后分发到副节点(别忘了环境变量也要再次分发):
[root@master module]# scp /etc/profile slave1:/etc/profile
[root@master module]# scp /etc/profile slave2:/etc/profile
[root@master module]# scp -r /opt/module/hadoop root@slave1:/opt/module
[root@master module]# scp -r /opt/module/hadoop root@slave2:/opt/module
分发完后去副节点刷新环境变量
2.5 初始化namenode:
[root@master ~]# hdfs namenode -format
结果:
2.6 开启集群:
简易启动:
[root@master ~]# start-all.sh
结果:
2.7 查看hadoop Web端
运行成功有如下界面:
运行成功有如下界面:
Hadoop 完全分布式搭建完成
Hadoop完全分布式集群搭建 centos 6.5(保姆级教程)
Hadoop完全分布式搭建
环境:
使用的是 centos6.5 hadoop-3.3.0 ,jdk版本推荐使用Jdk-1.8.0_202否则容易出现版本不兼容
准备三台主机:HadoopMaster,HadoopSlave1,HadoopSlave2
!!注:除了一些系统文件用root用户编辑外,其他都用普通用户来编辑(可以用vim,sudo来编辑),否则要出现权限问题
步骤:
一.主机配置
1.配置ip(比较基础就没写了)
2.关闭防火墙
临时关闭
service iptables stop
永久关闭
chkconfig iptables off
3.root用户下编辑hosts文件将主机名与ip绑定(三台都要互相放)
vi /etc/hosts
4 .三台主机互相进行免密登录
分别在三台主机上执行命令生成秘钥并将三台主机的公钥钥都复制在authorized_keys中
ssh-keygen -t rsa
系统在~/.ssh目录下会生成两个文件id_rsa(本机私钥) id_rsa.pub(公钥),将公钥放进authorized_keys(复制后自动生成)中
cp ~/.ssh/id_rsa.pub ~/.ssh/authorized_keys
将另外两台主机的公钥也放进来
直接把authorized_keys文件传到另外两台的.ssh文件中
scp ~/.ssh/authorized_keys hadoop@HadoopSlave1:~/.ssh
scp ~/.ssh/authorized_keys hadoop@HadoopSlave2:~/.ssh
将authorized_keys文件赋予权限600
chmod 600 ~/.ssh/authorized_keys
二.编辑hadoop配置文件
上传hadoop压缩包到Master并解压:
在这用的是powershell 上传的大家可以用其他工具上传
Scp Hadoop.tar.gz hadoop@192.168.52.20:/home/hadoop/software
在/home/hadoop/software目录下解压
tar -zxvf Hadoop.tar.gz
创建数据目录 ,因为三台都要创建故直接放在hadoop-3.3.0中,直接后期一起传过去
mkdir /home/hadoop/software/hadoop-3.3.0/hadooptmp
解压过后在 hadoop-.3.3.0/etc/hadoop 目录下初步环境需要编辑7个文件,大家在相应的中添加下面代码
1.hadoop-env.sh
vim hadoop-env.sh
将jdk路径放进其中(根据自己jdk的安装路径):
export JAVA_HOME=/home/hadoop/桌面/jdk
2.yarn-env.sh
加入如下代码(jdk路径)
vim yarn-env.sh
export JAVA_HOME=/home/hadoop/桌面/jdk
然后保存文件
3.core-site.xml
vim core-site.xml
core-site.xml 中的内容:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://HadoopMaster:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/software/hadoop-3.3.0/hadooptmp</value>
</property>
</configuration>
4.hdfs-site.xml
hdfs-site.xml 中的内容:
vim hdfs-site.xml
<configuration>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
5.yarn-site.xml
yarn-site.xml 中的内容:
vim yarn-site.xml
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>HadoopMaster:18040</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>HadoopMaster:18030</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>HadoopMaster:18025</value>
</property>
<property>
<name>yarn.resourcemanager.admin.address</name>
<value>HadoopMaster:18141</value>
</property>
<property>
<name>yarn.resourcemanager.webapp.address</name>
<value>HadoopMaster:8088</value>
</property>
</configuration>
6.mapred-site.xml
mapred-site.xml 中的内容
vim mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
7.在 HadoopMaster 节点配置 works 文件
使用 vim 编辑:
vim /workers
用下面的代码替换 works 中的内容(节点主机名)
HadoopSlave1
HadoopSlave2
8.复制到从节点
使用下面的命令将已经配置完成的 Hadoop目录复制到从节点 Slave 上:
scp -r hadoop hadoop@HadoopSlave1:~/software/
scp -r hadoop hadoop@HadoopSlave2:~/software/
9.配置 Hadoop 启动的系统环境变量 (root用户)
该节的配置需要同时在三个节点(Master 和 Slave)上进行操作,操作命令如下:
vi ~/.bash_profile
将下面的代码追加到.bash_profile 末尾:
export HADOOP_HOME=/home/hadoop/software/hadoop-3.3.0
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
然后执行刷新命令:
source ~/.bash_profile
10.格式化hadoop集群
格式化命令如下,该操作需要在 Master 节点上执行:
hadoop namenode -format
11.启动 Hadoop集群
在master上执行
start-all.sh
四.验证
1.分别查看进程
Master:
Slave1:
Slave2:
2.在浏览器打开端口:
在浏览器输入:http://192.168.53.20:9870 查看yarn端口
在浏览器输入:http://192.168.53.20:8088 查看hdfs端口会出现Slave1和Slave2节点
自己搭建的过程大家共同学习
以上是关于hadoop-3.1.3完全分布式保姆级搭建的主要内容,如果未能解决你的问题,请参考以下文章
Hadoop完全分布式集群搭建 centos 6.5(保姆级教程)
hadoop集群搭建(Hadoop 3.1.3 /Hive 3.1.2/Spark 3.0.0)