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端

http://master:50070/

http://192.168.1.10:50070/

运行成功有如下界面:

http://master:8088

http://192.168.1.10:8088

运行成功有如下界面:

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)

Hadoop2.7.7伪分布式环境搭建(保姆级教程)

HBase 分布式搭建

IT保姆级❤️开发测试环境搭建教程大集合热门技术+工具类(持续更新)

Hadoop完全分布式群起集群