大数据运维 Hadoop完全分布式环境搭建

Posted 脚丫先生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大数据运维 Hadoop完全分布式环境搭建相关的知识,希望对你有一定的参考价值。

一、准备工作

1.1 安装VMware并设置网络

下载vmvare软件,配置NAT网络模式。NAT是网络地址转换,是在宿主机和虚拟机之间增加一个地址转换服务,负责外部和虚拟机之间的通讯转接和IP转换。

1.2.安装centos虚拟机(这里就不详细说了,网上太多了)

安装完后克隆虚拟机,产生三台虚拟机共集群使用。

三台虚拟机的ip:

192.168.239.128 
192.168.239.129 
192.168.239.130 

1.3 虚拟机配置(三台虚拟机同理)

  • (1) 永久修改主机名
    修改配置文件 /etc/hostname 保存退出。
[root@xxxx ~]# vi /etc/hostname
spark1
~                                                                                                                                                            
~                                                                                                                                                            
~                                                                                                                                                            
~                                                                                                                                                            
                                                                                                                                                          
:wq

[root@xxxx ~]# reboot
  • (2) 修改host
[root@spark1 ~]# vi /etc/hosts
192.168.239.128 spark1
192.168.239.129 spark2
192.168.239.130 spark3

注意: 需要把以上hosts配置到windows的hosts文件中,才能使用http://spark1:port 的形式进行访问HDFS的界面。当然也可以用服务器的ip进行访问。

  • (3) 关闭防火墙和selinux(Centos7)

停止防火墙命令:

systemctl stop firewalld

开机禁止启动防火墙命令:

systemctl disable firewalld
  • (4) 关闭selinux
vim /etc/sysconfig/selinux

  • (5) ssh设置 免密登陆
    集群之间的机器需要相互通信,我们需要先配置免密码登录。
[root@spark1 ~]# ssh-keygen -t rsa

拷贝生成的公钥到另外两台虚拟机:

[root@spark1 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub spark2
[root@spark1 ~]# ssh-copy-id -i ~/.ssh/id_rsa.pub spark3

另外两台虚拟机(spark1,spark2)也需要执行上述步骤
测试:

[root@spark1 ~]# ssh spark2
Last login: Mon Aug  2 11:27:04 2021 from 192.168.239.1
[root@spark2 ~]# 

二、集群规划

所有下载资源的地址:华为开源镜像站

主机名IPNameNodeDataNodeResourceManagerNodeManagerSecondaryNameNode
spark1192.168.239.128
spark2192.168.239.129
spark3192.168.239.130

2.1 编写同步脚本xsync

#!/bin/bash
#1 获取输入参数个数,如果没有参数,直接退出
pcount=$#
if((pcount==0)); then
echo no args;
exit;
fi
 
#2 获取文件名称
p1=$1
fname=`basename $p1`
echo fname=$fname
 
#3 获取上级目录到绝对路径
pdir=`cd -P $(dirname $p1); pwd`
echo pdir=$pdir
 
#4 获取当前用户名称
user=`whoami`
 
#5 循环
for i in spark1 spark2 spark3
do
        #echo $pdir/$fname $user@hadoop$host:$pdir
        echo --------------- $i ----------------
        rsync -rvl $pdir/$fname $user@$i:$pdir
done

并把xsync设置为全局命令:

[root@spark1 bin]# ln -s /usr/local/datawork/bin/xsync /usr/bin/xsync 

2.2 安装JAVA 环境JDK

在华为资源站下载jdk-8u191-linux-x64.tar.gz,上传spark1虚拟机 /usr/java目录下,并解压:

[root@spark1 java]# ls
jdk1.8.0_191

配置环境变量:

vim /etc/profile
#添加如下内容
export JAVA_HOME=/usr/java/jdk1.8.0_191
export JRE_HOME=/usr/java/jdk1.8.0_191/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export PATH=.:${JAVA_HOME}/bin:$PATH

使用source命令生效

source /etc/profile

查看Java环境变量配置是否成功:

[root@spark1 ~]# java -version
openjdk version "1.8.0_282"
OpenJDK Runtime Environment (build 1.8.0_282-b08)
OpenJDK 64-Bit Server VM (build 25.282-b08, mixed mode)
``
`
到此jdk已经安装成功。
其他两台虚拟机可以按照上述方式安装,也可以使用快捷方式,通过以下命令同步这两台虚拟机

```java
 rsync -av /usr/java/jdk1.8.0_191 spark2:/usr/java/jdk1.8.0_191
 rsync -av /usr/java/jdk1.8.0_191 spark3:/usr/java/jdk1.8.0_191
 rsync -av /etc/profile spark2:/etc/profile
 rsync -av /etc/profile spark3:/etc/profile

然后分别在另外两台虚拟机上执行source命令,使配置文件生效。

2.3 hadoop安装

在华为资源站下载压缩包,上传spark1虚拟机 /usr/local/datawork目录下
并解压后:

配置环境变量

vim /etc/profile
#添加如下内容
export HADOOP_HOME=/usr/local/datawork/hadoop-2.8.5
export PATH=.:${JAVA_HOME}/bin:${HADOOP_HOME}/sbin:$PATH

使用source命令生效

source /etc/profile

2.3.1 配置 hadoop

进入hadoop文件夹查看目录:

etc目录存放配置文件
sbin目录下存放服务的启动命令
share目录下存放jar包与文档

  • (1) 配置hdfs-site.xml
vi etc/hadoop/hdfs-site.xml
<configuration>
    <property>
       <name>dfs.name.dir</name>
       <value>/home/data/namenode</value>
    </property>
    <property>
       <name>dfs.data.dir</name>
       <value>/home/data/datanode</value>
    </property>
    <property>
       <name>dfs.tmp.dir</name>
       <value>/home/data/tmp</value>
    </property>

    <property>
        <name>dfs.replication</name>
        <value>1</value>
    </property>
    <property>  
        <name>dfs.webhdfs.enabled</name>  
        <value>true</value>  
    </property>  
</configuration>

  • (2) 配置core-site.xml
<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://spark1:8020</value>
    </property>
    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>
</configuration>
  • (3) 配置mapred-env.sh
 `#添加
export JAVA_HOME=/usr/java/jdk1.8.0_191
  • (4) 配置yarn-env.sh
 `#添加
export JAVA_HOME=/usr/java/jdk1.8.0_191
  • (5) 配置yarn-site.xml
<configuration>

<!-- Site specific YARN configuration properties -->

  <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
  </property>
  <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>spark1</value>
  </property>
</configuration>
  • (6) 配置mapred-site.xml,如果没有就拷贝mapred-site.xml.template然后重命名为mapred-site.xml
<configuration>
   <property>
      <name>mapreduce.jobhistory.address</name>
      <value>spark1:10020</value>
   </property>
   <property>
      <name>mapreduce.jobhistory.webapp.address</name>
      <value>spark1:19888</value>
   </property>
   <property>
      <name>mapreduce.framework.name</name>
      <value>yarn</value>
   </property>
</configuration>

配置从节点的主机名,前面配置host的时候已经ip和hostname做了映射就可以使用hostname,如果没有就需要写对应的ip

vi etc/hadoop/slaves

[root@spark1 hadoop]# cat slaves 
spark1
spark2
spark3

同理我们也可以通过命令去同步另外两台虚拟机,减少安装hadoop时间

rsync -av /usr/local/datawork/hadoop-2.8.5 spark2:/usr/local/datawork/
rsync -av /usr/local/datawork/hadoop-2.8.5 spark3:/usr/local/datawork/
rsync -av /etc/profile spark2:/etc/profile
rsync -av /etc/profile spark3:/etc/profile

然后分别在两台虚拟机上执行source命令,使得环境变量有效。

2.4 启动hadoop集群

启动hdfs,首次启动需格式化hdfs。

[root@spark1 ~]# hdfs namenode -format

格式化完毕后可以使用以下命令开启集群.

[root@spark1~]# start-all.sh

启动完后,执行jps查看执行情况
主节点(spark1):

[root@spark1~]# jps
9814 Jps
4374 SecondaryNameNode
3176 NameNode
3545 ResourceManager
3645 NodeManager

从节点(spark2):

[root@spark2~]# jps
2933 NodeManager
5062 DataNode
7784 Jps

从节点(spark3):

[root@spark2 ~]# jps
5020 DataNode
7629 Jps
2926 NodeManager

到此集群已搭建成功,接着继续看一下控制台的一些情况
输入http://192.168.239.128:50070/,查看hdfs运行情况:

输入http://192.168.239.128:8088查看YARN运行情况

以上是关于大数据运维 Hadoop完全分布式环境搭建的主要内容,如果未能解决你的问题,请参考以下文章

我搭建大数据Hadoop完全分布式环境遇到的坑---hadoop: command not found

基于Ubuntu16搭建Hadoop大数据完全分布式环境

Hadoop集群大数据平台搭建

hadoop完全分布式集群搭建(超详细)-大数据集群搭建

大数据系列——Hadoop集群完全分布式坏境搭建

大数据开发基础入门与项目实战Hadoop核心及生态圈技术栈之1.Hadoop简介及Apache Hadoop完全分布式集群搭建