大数据科普系列(四) Hadoop集群搭建
2019-11-05阅读 1536

通过前面的学习,我们知道了什么是大数据、分布式以及Hadoop。下面,我们就来亲自动手搭建一个Hadoop系统。

集群规划

我们计划搭建一个拥有3个节点的Hadoop分布式集群,具体规划如下:

4-1.png

其中NameNode、SecondryNameNode和DataNode是HDFS集群中的进程,ResourceManager和NodeManager是YARN集群的进程。NameNode与ResourceManager是主节点,而DataNode与NodeManager是从节点。

准备工作

首先,我们得准备3台Linux主机,这里是使用VMwareWorkStation创建了3台CentOS6.7的虚拟机,对于虚拟机及Linux不懂的同学请自行问度娘,这里不再科普。接下来,我们要做的事情还有很多:

1)配置普通用户sudoer权限(这里创建的普通用户叫做hadoop)

a)在root账号下使用命令:vim /etc/sudoers

b)找到 root  ALL=(ALL)  ALL  这一行

c)然后在它下面添加一行:hadoop ALL=(ALL)  ALL,保存退出

4-2.png

2)修改主机名

    a)在root账号下用命令:vi /etc/sysconfig/network如果Hadoop用户配置了sudo权限,也可以在 hadoop 登录情况下使用命令: sudo vi /etc/sysconfig/network

    b)修改好新名字(hadoop1、hadoop2、hadoop3)后保存退出

4-3.png

3)配置静态 IP(注意规划好3个节点各自的ip地址)

a)查看网络信息:ifconfig

b)编辑eth0网卡信息:sudo vi /etc/sysconfig/network-scripts/ifcfg-eth0

  1.     修改 BOOTPROTO 为 static

  2.     添加 IPADDR=指定 IP

  3.     添加 DNS1=指定域名解析

  4.     添加 GATEWAY= 你的网关

  5.     子网掩码 PREFIX=24

  6.     删除 HWADDR 和 UUID

  7.     保存退出重启主机

4-4.png

4)配置主机映射

修改配置文件:sudo vi /etc/hosts,3台都要修改

4-5.png

5)关闭防火墙

    1. 查看防火墙状态:service iptables status

    2. 关闭防火墙:service iptables stop

    3. 关闭防火墙开机启动:chkconfig iptables off

     

6)同步服务器时间(分布式集群节点间时间相差太大的话会导致服务进程起不来)

    1. 查看时间    date

    2. 同步时间    ntpdate ntp1.aliyun.com

7)配置ssh免密登录

    1. 在hadoop账户下,输入命令ssh-keygen,连按3次回车,在/home/hadoop/.ssh 目录下就生成了一对密钥

    2. 在hadoop1的hadoop用户家目录使用ssh-copy-id hadoop2,这条指令的意思是复制当前主机ssh公钥到hadoop2的 .ssh/authorized_keys文件里,即建立hadoop1到hadoop2的免密登录

    3. 在hadoop2、hadoop3分别使用ssh-copy-id hadoop2将自己公钥复制到 hadoop2的authorized_keys文件里

    4. 将hadoop2的authorized_keys发送给hadoop1、hadoop3

      scp ~/.ssh/authorized_keys hadoop1:~/.ssh

        注意,首次访问任然会要求输入账号和密码。

 

8)安装JDK(Hadoop是用Java语言写的,需要Java运行环境,3台虚拟机都要安装)

  1. 切换到root账号

  2. 上传Java安装包如:jdk-8u181-linux-x64.tar.gz ,解压到指定目录下,比如:tar -zxvf jdk-8u181-linux-x64.tar.gz -C /usr/local

  3. 配置环境变量

    vi /etc/profile

    在最后加入两行:

    export JAVA_HOME=/usr/local/jdk1.8.0_181

    export PATH=$PATH:$JAVA_HOME/bin

  4. 使修改的环境变量生效 :source /etc/profile

  5. 检测是否安装成功,输入命令:java –version

    4-5-1.png

自此,准备工作就完成了。

    集群搭建

1)获取安装包并解压到指定目录:下载传送门

2)解压到指定目录

tar -zxvf hadoop-2.7.5.tar.gz -C ~/apps/

注意:-C 的意思是指定解压路径,目标路径不存在则需要先创建:mkdir ~/apps

3)修改配置文件

hadoop的配置文件位于$HADOOP_HOME/etc/hadoop/文件夹中,需要修改的配置共有6个:

hadoop-env.sh

vim $HADOOP_HOME/etc/hadoop/hadoop-env.sh


# The java implementation to use.# 找到这一行,改为自己的jdk路径

export   JAVA_HOME=/usr/local/jdk1.8.0_181

core-site.xml

vim $HADOOP_HOME/etc/hadoop/core-site.xml

中加入以下代码

<!-- 指定 hdfs 的 namenode -->

<property>

<name>fs.defaultFS</name>

<value>hdfs://hadoop1:9000</value>

</property>

<!-- 指定hadoop工作目录 -->

<property>

<name>hadoop.tmp.dir</name>

<value>/home/hadoop/data/hadoopdata/</value>

</property>

hdfs-site.xml

vim $HADOOP_HOME/etc/hadoop/hdfs-site.xml

中加入以下代码 

<!-- 指定 hdfs 的数据保存目录  -->

<property>

<name>dfs.namenode.name.dir</name>

<value>/home/hadoop/data/hadoopdata/name</value>

</property>

<property>

<name>dfs.datanode.data.dir</name>

<value>/home/hadoop/data/hadoopdata/data</value>

</property>

<!-- 指定 hdfs 的 备份副本数 默认是3 -->

<property>

<name>dfs.replication</name>

<value>3</value>

</property>

<!-- 指定 hdfs 的 seconarynamenode -->

<property>

<name>dfs.secondary.http.address</name>

<value>hadoop2:50090</value>

</property>

mapred-site.xml

复制mapred-site.xml.template文件,并命名为mapred-site.xml

cp $HADOOP_HOME/etc/hadoop/mapred-site.xml.template mapred-site.xml

vim $HADOOP_HOME/etc/hadoop/mapred-site.xml

中加入以下代码

<!-- 指定 mapreduce 的运行模式 默认是local -->

<property>

<name>mapreduce.framework.name</name>

<value>yarn</value>

</property>

yarn-site.xml

vim $HADOOP_HOME/etc/hadoop/yarn-site.xml

中加入以下代码

<!-- 指定 yarn 的主节点 -->

<property>

<name>yarn.resourcemanager.hostname</name>

<value>hadoop3</value>

</property>

<property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce_shuffle</value>

</property>

slaves,指定从节点有哪些

vim $HADOOP_HOME/etc/hadoop/slaves


hadoop1

hadoop2

hadoop3

4)配置环境变量

    a)vim ~/.bashrc,在最后面加入以下语句:

        export HADOOP_HOME=/home/hadoop/apps/hadoop-2.7.5

        export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

    b)source ~/.bashrc

 

5)将安装包和环境变量文件分发至另外2个节点,如

scp –r ~/apps hadoop2:~/

scp ~/.bashrc hadoop2:~/ 

别忘了, source 一下环境变量文件


6)初始化HDFS系统

在 HDFS 主节点上执行命令 hdfs namenode –format 进行初始化

4-6.png

7)启动集群

  1. 启动HDFS

    start-dfs.sh (在集群任意节点执行 )

  2. 启动YARN

    start-yarn.sh(只能在YARN的主节点启动,否则ResourceManager进程无法启动 )


8)验证集群是否安装成功

        a)使用 jps 指令查看进程:查看规划的守护进程是否成功启动

        b)WebUI

        http://192.168.25.101:50070/

        http://192.168.25.103:8088/

    4-8.png

    4-9.png

    c)上传一个文件到HDFS:hadoop fs -put xxx /(前面 xxx 代表要上传的文件在本地的路径,/ 表示上传到 hdfs 的路径)

    d)执行一个MapReduce任务,运行hadoop自带求PI demo程序并观察执行过程:

    hadoop   jar ~/apps/hadoop-2.7.5/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar   pi 5 5

     好了,至此,相信大家已经成功搭建了分布式的hadoop集群,我们下期再会!