Hadoop分布式实验环境

实验目的:
  • 熟悉 Linux 操作系统的安装以及常用的基本命令
  • 掌握如何设置静态 IP 地址,掌握如何修改主机域名
  • 掌握如何配置 Java 环境变量,掌握 Java 基本命令
  • 了解为何需要配置 SSH 免密码登录,掌握如何配置 SSH 免密码登录
  • 熟练掌握在 Linux 环境下如何构建分布模式下的 Hadoop 集群
实验内容
  • 安装和配置 CentOS7 的 Liunx 发行版
  • 安装和配置 CentOS7 的网络以及 IP、主机名
  • 启动和配置 SSH 免密码登录,配置 Java 环境
  • 安装和配置 Hadoop 分布式集群环境
实验步骤

  分析部署 Hadoop 分布式集群需要三台主机,分别作为三个数据节点DataNode 和三个管理节点NodeManager,再将其中每一个主机分别作为 NameNode、 ResourceManager、SecondaryNameNode。

MasterSlave1slave2
HDFSNameNodeDataNodeSecondaryNameNode
HDFSDataNodeDataNode
YARNNodeManagerResouceManagerNodeManager
YARNNodeManager

  安装好 VMWare12 虚拟机,新建一个基于 CentOS 发行版的 Liunx 虚拟机,然后安装 CentOS7 操作系统,然后通过克隆方式,克隆出另外两台 CentOS7 主机,以root 权限配置好必要信息后,采用远程登录工具 SecureCRT 登录服务器进行操作。
  将建好的虚拟机重新命名为 Hadoop-Node0(主机名为 master)、 HadoopNode1(主机名为 slave1)、 Hadoop-Node2(主机名为 slave2),三台主机都配置一个用户名都为 hadoop,登录密码都为 hadoop,同时使用 root 权限进行对三台主机进行开机关闭防火墙,因为 Hadoop 中的进程端口多而且集群采用内网部署,可以不需要防火墙。
  网络配置,使用 VMnet8 这张虚拟网卡,查看网段 IP,网关 IP 地址为192.168.92.1,子网掩码 IP 地址为 255.255.255.0,则在该网段内为三台主机进行配置静态 IP 和重新生成 MAC 地址,使三台主机处于同一网段下, 使用同一时区的时间进行三台主机的时间同步(也可以采用 ntp 的方式进行集群时间同步), 对应关系如下:

  • Hadoop-Node0——192.168.92.2——master
  • Hadoop-Node1——192.168.92.3——slave1
  • Hadoop-Node2——192.168.92.4——slave2

网络配置
  配置好每一台主机的主机名以及静态 IP 地址,同时进行主机名与 IP 地址的映射,在每一台主机的 hosts 文件中都需要配置相同的主机名与 IP 映射,这样才是使用主机名时才能识别主机对应的 IP,文件内容如下:

  • 192.168.92.2 master
  • 192.168.92.3 slave1
  • 192.168.92.4 slave2

  配置 SSH 免密登陆,首先在每台服务器生成密钥对后,即每台机器上都执行 ssh-keygen –t rsa 需要输入密码的地方直接按 Enter 回车键,这样就采用 RSA加密算法生成了公钥秘钥在当前隐藏文件夹.ssh 下。然后在每台服务器上执行 sshcopy-id命令,将公钥复制到其它两台服务器上即可,该命令可以自动将公钥添加到名为 authorized_keys的文件中,在每台服务器都执行完以上步骤后就可以实现多台服务器相互无密码登陆了。

  • ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@master
  • ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@slave1
  • ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@lave2

免密登录
  集群部署,首先要分配好集群的角色,比如 HDFS 的角色有 NN、 DN、SecondaryNN, YARN 的角色有 RM、 NM,分配好在集群中的主机位置。Master Slave1 Slave2三个主机上应该都有着我们提前分配好的角色。分布式文件系统HDFS:NameNode、DataNode、SecondaryNameNode;YARN:NodeManager、ResouceManager。
  配置文件,在/home/Hadoop 下创建一个 app/目录,将 hadoop-2.7.7 解压到 app/目录下,将 jdk1-8 也解压到 app/目录下,配置好 JAVA_HOME 和 HADOOP_HOME环境变量,添加到当前用户的 bash_profile。 按照提前准备好的配置文档进行对Hadoop 进行文件的配置,在/home/hadoop/app/hadoop-2.7.7/etc/hadoop/对各个配置文件进行修改配置。
  对 HDFS 进行格式化,在 master 主机上进行格式化即可。使用 hdfs namenode-format 命令进行格式化,等待格式化的结果,会显示成功的格式化目录在配置好的/home/hadoop/app/hadoop-2.7.7/temp 目录下。

HDFS格式化
  启动 Hadoop 的组件的进程(在 master 主机上启动 HDFS、 在 slave1 主机上启 动 YARN ) , 采 用 jps 命 令 查 看 进 程 和 通 过 浏 览 器 查 看 。

启动HDFS
启动Yarn

  上传文件到 HDFS 后,通过浏览器查看目录文件以及分块情况,同时也可以在 Liunx 端查看到情况。
  运行 wordcount 程序,体验并检验 Hadoop 集群。
  关闭 Hadoop 集群,现在 master 主机上关闭 HDFS,在 slave1 主机上关闭YARN,则 slave2 主机上的 Hadoop 集群的进程就自动被关闭了。

关闭HDFS

关闭Yarn

实验代码或分析

重启网卡

systemctl restart network

查看防火墙状态

systemctl status firewalld

设置开机不启动防火墙

systemctl disable firewalld

配置免密登录
先在每一台主机上执行生成 RSA 算法的秘钥

ssh-keygen –t rsa

从 master 以 hadoop 用户登录 master、 slave1、 slave2 免密
在 master 主机上进行一下操作命令即可

ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@master
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@slave1
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@slave2

从 slave1 以 hadoop 用户登录 master、 slave1、 slave2 免密
在 slave1 主机上进行一下操作命令即可

ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@master
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@slave1
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@slave2

从 slave2 以 hadoop 用户登录 master、 slave1、 slave2 免密
在 slave2 主机上进行一下操作命令即可

ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@master
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@slave1
ssh-copy-id -i ~/.ssh/id_rsa.pub hadoop@slave226.

配置好 master 主机上的 Hadoop 后进行集群分发到 slave1 和 slave2

scp –r /home/hadoop/app hadoop@slaver1:/home/hadoop
scp –r /home/hadoop/app hadoop@slaver2:/home/hadoop

分发 master 主机上的环境变量配置文件

scp –r ~/.bash_profile hadoop@slaver1:~/
scp –r ~/.bash_profile hadoop@slaver2:~/
Hadoop配置文件
  • 核心配置文件
    /home/hadoop/app/hadoop-2.7.7/etc/hadoop/slaves
<!--配置 Hadoop 集群主机-->
master
slave1
slave2

/home/hadoop/app/hadoop-2.7.7/etc/hadoop/core-site.xml

<configuration>
    <!--配置 HDFS 的 NameNode-->
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://master:9000</value>
    </property>
    <!--配置 DataNode 保存数据的位置-->
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hadoop/app/hadoop-2.7.7/temp</value>
    </property>
</configuration>
  • HDFS 配置文件
    /home/hadoop/app/hadoop-2.7.7/etc/hadoop/hadoop-env.sh
<!--配置 HDFS 的 Java 环境-->
export JAVA_HOME=/home/hadoop/app/jdk1.8.0_191

/home/hadoop/app/hadoop-2.7.7/etc/hadoop/hdfs-site.xml

<configuration>
    <!--配置 HDFS 的副本数-->
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    <!--配置是否检查权限-->
    <property>
        <name>dfs.permissions</name>
        <value>false</value>
    </property>
    <!--配置 Hadoop 辅助名称节点主机配置 SecondaryNameNode-->
    <property>
        <name>dfs.namenode.secondary.http-address</name>
        <value>slave2:50090</value>
    </property>
</configuration>
  • YARN 配置文件
    /home/hadoop/app/hadoop-2.7.7/etc/hadoop/yarn-env.sh
<!--配置 YARN 的 Java 环境-->
JAVA_HOME=/home/hadoop/app/jdk1.8.0_191

/home/hadoop/app/hadoop-2.7.7/etc/hadoop/yarn-site.xml

<configuration>
    <!--配置 ResourceManager 的地址-->
    <property>
        <name>yarn.resourcemanager.hostname</name>
        <value>slave1</value>
    </property>
    <!--配置 NodeManager 执行任务的方式-->
    <property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>
</configuration>
  • MapReduce 配置文件
    /home/hadoop/app/hadoop-2.7.7/etc/hadoop/mapred-env.sh
<!--配置 MapReduce 的 Java 环境-->
export JAVA_HOME=/home/hadoop/app/jdk1.8.0_191

/home/hadoop/app/hadoop-2.7.7/etc/hadoop/mapred-site.xml.template
先修改文件 MapReduce

cp mapred-site.xml.template mapred-site.xml

/home/hadoop/app/hadoop-2.7.7/etc/hadoop/mapred-site.xml

<configuration>
    <!--配置 MapReduce 运行在 YARN 上-->
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>
</configuration>
实验检测

上传/home/hadoop/hadoop-2.7.7.tar.gz 和jdk-8u191-linux-x64.tar.gz 文件到 HDFS 根目录

hdfs dfs -put /home/hadoop/hadoop-2.7.7.tar.gz /
hdfs dfs -put /home/hadoop/jdk-8u191-linux-x64.tar.gz /

以递归方式查看 HDFS 的根目录结构

hdfs dfs -ls -R /

运行 Hadoop 自带的 wordcount 程序,进行词频统计

hadoop jar hadoop-mapreduce-examples-2.7.7.jar wordcount /README.txt /output
hadoop jar hadoop-mapreduce-examples-2.7.7.jar wordcount /LICENSE.txt /output
注意说明

  通过本次部署大数据平台 Hadoop 的分布式环境,比之前部署伪分布式环境更加熟悉整个过程的搭建,进一步的深刻理解 Liunx 的操作基础以及 Hadoop 的分布式环境搭建,对Hadoop的认识更加的深刻理解。
  对 Liunx 的网络配置以及整个集群的静态 IP 设置和网关设置、防火墙的状态查看以及关闭,以及主机名设置和主机名与 IP 进行映射,通过配置 SSH 的非对称加密,通过公钥和私钥实现三台主机之间的相互之间免密登陆。
  配置 Hadoop 的核心组件,核心配置文件 core-site.xml,配置 HDFS 的NameNode 地址以及运行时储存目录; HDFS 配置文件 hadoop-env.sh 用于配置 HDFS的 Java 环境, hdfs-site.xml 指定副本数以及辅助名称节点的主机配置; YARN 配置文件 yarn-env.sh 用于配置 YARN 的 Java 环境, yarn-site.xml 配置 YARN 的NodeManger 和 ResourceManger; MapReduce 配置文件 mapred-env.sh 用于配置MapReduce 的 Java 环境, mapred-site.xml 配置 MapReduce 运行在 YARN 上。
  采用分发 scp 命令或者采用脚本进行分发集群搭建,以及了解使用 rsync对集群中存在差异的配置文件进行同步更新,以及在集群中常用的时间同步方法以及了解采用部署 ntp 集群实现时间同步。
  进一步理解 Hadoop 的各个组件原理,特别是 HDFS 的储存原理,分块储存以及副本机制等等。使用提供的 jar 包,运行 wordcount 程序 jar 包,体验大数据Hadoop 分布式平台以及 MapReduce 数据处理框架。
  对于每一个操作步骤不是很清楚的,可以访问本人的GitHub,在学习资料里面有着详细的学习以及安装的过程,是PDF格式的文档说明。

Hadoop分布式环境搭建详细文档
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值