Hadoop完全分布式部署

简介: Hadoop完全分布式部署

一、 任务描述

要想深入的学习hadoop数据分析技术,首要的任务是必须要将hadoop集群环境搭建起来,可以将hadoop简化地想象成一个小软件,通过在各个物理节点上安装这个小软件,然后将其运行起来,就是一个hadoop分布式集群了。

二、任务目标

(1)学会hadoop完全分布式配置

(2)理解完全分布式配置的配置文件

三、 任务环境

本次环境是:Ubuntu16.04 + jdk1.8.0_73+hadoop-2.7.3

四、任务分析

Hadoop 集群的安装配置大致为如下流程:

 选定一台机器作为 master,在 master 节点上安装 Hadoop,配置网络环境和免密。将 master 节点上的 /simple/hadoop-2.7.3 复制到其他 slave 节点上。在 master 节点上开启 Hadoop服务,查看集群启动状态。

五、 任务实施

步骤1、网络配置

由于在实际环境中每次生成的主机名都不一致,为了命名的规范和简洁,需要修改每台虚拟机的主机名。在ip为192.168.0.2的虚拟机终端输入命令vim /etc/hostname】,进入编辑页面输入“master”,编辑完成后保存退出。在终端输入命令【reboot】重启后,主机名就修改完成了。然后将ip为192.168.0.3的虚拟机的主机名修改slave1,ip为19.168.0.4的虚拟机的主机名修改为salve2。如图1所示。

4f8e3d763614434e818b32af62dd389e.png

图1 修改主机名

修改每台电脑的hosts文件。hosts文件和windows上的功能是一样的。存储主机名和ip地址的映射。在每台linux上,【vim /etc/hosts】 编写hosts文件。

将主机名和ip地址的映射填写进去。编辑完后,结果如图2所示:


d89f80cbb0e34312923a7e2a45d1f1a4.png

图2 编辑hosts文件

配置完网络之后,可以通过ping命令进行测试是否能够连通,ping除了可以直接连接IP地址,也可以连接主机名,不过此时需要对配置文件hosts进行修改。

etc/hosts“文件是用来配置主机用的DNS服务器信息,是记载LAN内接各主机名称和IP地址,当用户在连接网络时,首先查找该文件,

寻找对应的主机名和IP地址。这样就可以实现不同节点之间可以通过ip地址或主机名相互ping通。如图3所示

32bae921c11241c2ba82a0e1748cd4ca.png

图3 测试机器之间的联通

完成以上操作即表示完成一个小的局域网络,为hadoop集群搭建准备好条件,由于每个节点之间需要相互配合,相互访问,为避免反复出现输入密码,

此时需要对各个节点之间配置免密码配置。 无密码登陆,效果也就是在master上,通过 ssh salve1ssh salve2 就可以登陆到对方计算机上。而且不用输入密码进入ssh目录。下面开始配置免密,进入ssh目录并查看。如图4所示

642d62e5602749239631dba5a685dc2c.png

图4 进入ssh目录

使用命令【ssh-keygen -t rsa】,一路按回车就行了。刚才的步骤主要是设置ssh的密钥和密钥的存放路径。 路径为~/.ssh下。

  打开~/.ssh 下面有三个文件

(1)authorized_keys,已认证的keys

  (2)id_rsa,私钥

  (3)id_rsa.pub,公钥三个文件。

  下面就是关键的地方了,(下面的操作为ssh认证。进行下面操作前,可以先搜关于认证和加密区别以及各自的过程。)在master上将公钥放到authorized_keys里。命令:【 cat ~/.ssh/id_rsa.pub >>~/.ssh/authorized_keys】。如图5所示



b12b0dce55214e41a50bc2f80c5435aa.png

图5 生成公钥和私钥


如果有其他 slave 节点,也要执行将 master 公钥传输到 slave 节点、在 slave 节点上加入授权这两步。这样,在 master 节点上就可以无密码 SSH 到各个 slave 节点了,可在 master 节点上执行如下命令进行检验,如下图所示

 将master上的公钥放到其他虚拟机的~/.ssh目录下,并测试免密是否成功。下面是放到对slave1的免密配置,依次完成salve2。如图6所示。注意:在进行文件传输时需要密码为“Simplexue123“。上述的操作过程只是单向的,即此时,ssh root@slave1和ssh root@slave2是不需要密码的。而ssh root@master等反向仍然是需要密码的。执行ssh slave1】后进入slave1节点,通过【ssh master】可以再次回到master节点。

ca94f3b6fe354d11b001e10a0da72960.png

图6 将公钥传给其他机器

♥ 温馨提示

  需要在所有节点上完成网络配置,如上面讲的是 master 节点的配置,而在其他的 slave 节点上,也要对/etc/hosts(跟 master 的配置一样)文件进行修改!

步骤2、解压Hadoop压缩包

在master节点执行命令【cd /simple/soft】进入软件包的所在文件夹中,并通过【ls】查看文件夹下所有软件。如图7所示。


294f9b9537544a539aceacd75e080adb.png图7 进入软件所在目录

  在simple目录下执行解压命令。如图8所示

d32e7870e5484797b4b661e4e80a1c57.png

图8 解压hadoop

步骤3、配置hadoop文件

  切换到配置文件所在目录下并查看。如图9所示


842d5e2eeac442b7b67a8f4da40414f8.png

图9 查看配置文件

  在当前目录下执行命令:【vim hadoop-env.sh】,按i键之后进入编辑状态,在文件中添加如下内容: export JAVA_HOME=/simple/jdk1.8.0_73

如图10所示。保存后在终端输入命令【vim yarn-env.sh】对yarn-env.sh进行同样的配置,如图11所示。

88b49ead05aa4b3abd4e630b92e2d9e2.png

图10 配置hadoop-env.sh

6dd0398e916f44348f29abe14cf6f0c8.png

图11 配置yarn-env.sh

  在当前目录下执行【vim core-site.xml】并修改配置文件core-site.xml的 内容如下(实际修改不需要写中文注释)。如果没有配置hadoop.tmp.dir参数

此时系统默认的临时文件为/tmp/Hadoop,而这个目录在每次重启机器后会删除,需要重新格式化,否则报错。

1.   <!-- 这个属性用来指定namenode的hdfs协议的文件系统通信地址,可以指定一个主机+端口,也可以指定为一个namenode服务(这个服务内部可以有多台namenode实现hadoop的namenode服务 -->
2.  <property>
3.         <name>fs.default.name</name>
4.         <value>hdfs://master:9000</value>
5.  </property>
6.  <property>
7.  <!-- 指定hadoop临时目录,前面用file:表示是本地目录。hadoop在运行过程中肯定会有临时文件或缓冲之类的,必然需要一个临时目录来存放,这里就是指定这个的 -->
8.       /**tmp提前创建好 */
9.          <name>hadoop.tmp.dir</name>
10.         <value>/simple/hadoop-2.7.3/tmp</value>
11. </property>
  在当前目录下执行【vim hdfs-site.xml】并修改配置文件hdfs-site.xml
1.  <!-- namenode数据的存放地点。也就是namenode元数据存放的地方,记录了hdfs系统中文件的元数据-->
2.  <property>
3.          <name>dfs.name.dir</name>
4.          <value>/simple/hadoop-2.7.3/hdfs/name</value>
5.  </property>
6.  <!-- datanode数据的存放地点。也就是block块存放的目录了-->
7.  <property>
8.          <name>dfs.data.dir</name>
9.          <value>/simple/hadoop-2.7.3/hdfs/data</value>
10. </property>
  在当前目录下执行编辑文件命令:【`vim mapred-site.xml`】并修改该文件内容
1.  <!-- 通知框架MR使用YARN -->
2.  <property>
3.          <name>mapreduce.framework.name</name>
4.          <value>yarn</value>
5.  </property>
6.  <!---- 指定mr框架jobhistory的内部通讯地址 -->
7.  <property>
8.          <name>mapreduce.jobhistory.address</name>
9.          <value>master:10020</value>
10. </property>
11. <!---- 指定mr框架web查看的地址 -->
12. <property>
13.          <name>mapreduce.jobhistory.webapp.address</name>
14.          <value>master:19888</value>
15. </property>
  在当前目录下执行【`vim yarn-site.xml`】,这个文件就是配置资源管理系统yarn了,其中主要指定了一些节点资源管理器nodemanager,以及总资源管理器resourcemanager的配置。 可以看到这个配置中,跟mapreduce框架是相关的。修改配置文件内容如下
  可见yarn首先是为了支持mapreduce这个模型,之后很多其他的框架都是基于mapreduce以及yarn的功能基础上开发出来的。
1.  <!--- 启用的资源调度器主类 -->
2.  <property>
3.      <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
4.      <value>org.apache.mapred.ShuffleHandler</value>
5.  </property>
6.  <!--- ResourceManager 对客户端暴露的地址。客户端通过该地址向RM提交应用程序,杀死应用程序等 -->
7.  <property>
8.      <name>yarn.resourcemanager.address</name>
9.      <value>master:8032</value>
10. </property>
11. <!-- ResourceManager 对ApplicationMaster暴露的访问地址。ApplicationMaster通过该地址向RM申请资源、释放资源等 -->
12. <property>
13.     <name>yarn.resourcemanager.scheduler.address</name>
14.     <value>master:8030</value>
15. </property>
16. <!-- ResourceManager 对NodeManager暴露的地址.。NodeManager通过该地址向RM汇报心跳,领取任务等 -->
17. <property>
18.     <name>yarn.resourcemanager.resource-tracker.address</name>
19.     <value>master:8031</value>
20. </property>
21. <!-- 对管理员暴露的访问地址。管理员通过该地址向RM发送管理命令等 -->
22. <property>
23.     <name>yarn.resourcemanager.admin.address</name>
24.     <value>master:8033</value>
25. </property>
26. <!-- ResourceManager对外web ui地址。用户可通过该地址在浏览器中查看集群各类信息 -->
27. <property>
28.     <name>yarn.resourcemanager.webapp.address</name>
29.     <value>master:8088</value>
30. </property>
31. <!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序 -->
32. <property>
33.     <name>yarn.nodemanager.aux-services</name>
34.     <value>mapreduce_shuffle</value>
35. </property>

在master节点上完成以上所有操作之后,需要把master上的hadoop分别远程拷贝到slave1,slave2上。例如:【scp –r hadoop-2.7.3/ slave1:/simple/】,如图12所示。然后使用命令【vim hadoop-2.7.3/etc/hadoop/slaves】修改文件slaves的内容,将原来的内容删掉替换为图13所示内容。

d19e0eecf70345f3a714e5bc41dc166a.png

图12 将hadoop拷贝到子节点

dd2e3763f7a44fcaa345faad74c3cadc.png

图13 修改主节点的slaves文件

  执行【vim /etc/profile】。把hadoop的安装目录配置到环境变量中。如图14所示。注意:依次在slave1,slave2虚拟机上配置环境变量。

74aab0fcb7cb4520b189a014ed85b839.png

图14 配置环境变量

  这里为了方便可以通过命令【scp –r /etc/profile slave1:/etc/profile】将环境变量传到其它的虚拟机环境中。如图13所示。然后对slave2执行同样的操作。

a5c54ae7dfef4547bc7618f1461a12df.png

图15 传输环境变量

  然后让配置文件生效:【source /etc/profile】,依次在slave1和slave2节点上执行该命令。如图16所示

93c62f9ca43c417680b90bf3950c14b5.png

图16 使配置文件生效

  格式化namenode。在任意目录下执行如下命令进行格式化:【hdfs namenode -format】 或者 【hadoop namenode -format】 。 如图17所示

e65974624cb9485aabc240ba9caf495b.png

图17 在master节点格式化namenode

  在master节点启动hadoop,输入命令:【start-all.sh】。如图18所示

f02eb41bc51249c983e2678449acc640.png

图18 启动hadoop服务

♥ 知识链接

hosts文件

配置hosts文件的作用,它主要用于确定每个结点的IP地址,方便后续master结点能快速查到并访问各个结点。在上述4个虚机结点上均需要配置此文件。由于需要确定每个结点的IP地址,所以在配置hosts文件之前需要先查看当前虚机结点的IP地址是多少,可以通过ifconfig命令进行查看

六、任务测试

启动之后,分别在master,slave1,slave2节点的任意目录下执行【jps】命令验证进程是否正常启动。如图19、20、21所示

36f9fdff722a4f66af02beed46acde58.png

图19 jps查看服务

031df696a6c74be084fb30178b3b1154.png

图20 jps查看服务

39ac401efa5447b8a76b0f6e8b9ad334.png

图21 jps查看服务

  测试hdfs和yarn(推荐火狐浏览器),首先在浏览器地址栏中输入:http://master:50070 (HDFS管理界面)。如图22所示


45653c6385f2454498dd10dd7bf033cd.png

图22 webui查看集群信息

4f2d0016afe04573806817484f635490.png

相关文章
|
2月前
|
分布式计算 资源调度 Hadoop
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
大数据-80 Spark 简要概述 系统架构 部署模式 与Hadoop MapReduce对比
80 2
|
1月前
|
分布式计算 资源调度 Hadoop
【赵渝强老师】部署Hadoop的本地模式
本文介绍了Hadoop的目录结构及本地模式部署方法,包括解压安装、设置环境变量、配置Hadoop参数等步骤,并通过一个简单的WordCount程序示例,演示了如何在本地模式下运行MapReduce任务。
|
2月前
|
分布式计算 NoSQL Java
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
Hadoop-32 ZooKeeper 分布式锁问题 分布式锁Java实现 附带案例和实现思路代码
56 2
|
2月前
|
分布式计算 Hadoop
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
Hadoop-27 ZooKeeper集群 集群配置启动 3台云服务器 myid集群 zoo.cfg多节点配置 分布式协调框架 Leader Follower Observer
54 1
|
2月前
|
存储 数据采集 分布式计算
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
Hadoop-17 Flume 介绍与环境配置 实机云服务器测试 分布式日志信息收集 海量数据 实时采集引擎 Source Channel Sink 串行复制负载均衡
56 1
|
2月前
|
分布式计算 Hadoop 网络安全
Hadoop-08-HDFS集群 基础知识 命令行上机实操 hadoop fs 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
Hadoop-08-HDFS集群 基础知识 命令行上机实操 hadoop fs 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
41 1
|
2月前
|
存储 机器学习/深度学习 缓存
Hadoop-07-HDFS集群 基础知识 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
Hadoop-07-HDFS集群 基础知识 分布式文件系统 读写原理 读流程与写流程 基本语法上传下载拷贝移动文件
55 1
|
2月前
|
分布式计算 资源调度 Hadoop
Hadoop-05-Hadoop集群 集群WordCount 超详细 真正的分布式计算 上传HDFS MapReduce计算 YRAN查看任务 上传计算下载查看
Hadoop-05-Hadoop集群 集群WordCount 超详细 真正的分布式计算 上传HDFS MapReduce计算 YRAN查看任务 上传计算下载查看
56 1
|
2月前
|
存储 SQL 消息中间件
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
Hadoop-26 ZooKeeper集群 3台云服务器 基础概念简介与环境的配置使用 架构组成 分布式协调框架 Leader Follower Observer
54 0
|
4月前
|
存储 分布式计算 算法
探索Hadoop的三种运行模式:单机模式、伪分布式模式和完全分布式模式
在配置Hadoop集群之前,了解这三种模式的特点、适用场景和配置差异是非常重要的。这有助于用户根据个人需求和资源情况,选择最适合自己的Hadoop运行模式。在最初的学习和开发阶段,单机模式和伪分布式模式能为用户提供便利和成本效益。进而,当用户要处理大规模数据集时,完全分布式模式将是理想的选择。
281 2