2019独角兽企业重金招聘Python工程师标准>>>

五、搭建Hadoop集群

上面的步骤,确认了单机可以执行Hadoop的伪分布执行,真正的分布式执行无非也就是多几台slave机器而已,配置方面的有一点点区别,配置起来就非常简单了。

1、准备三台服务器

192.168.56.101

192.168.56.102

192.168.56.103

在每台机器的/etc/hosts中都将ip及hostname给映射上:

192.168.56.101  nginx1

192.168.56.102  nginx2

192.168.56.103  nginx3

其中192.168.56.101为前面配置的那台服务器,用于做为namenode及jobtracker,另外两台用于做slaves,用于执行datanode及tasktracker。

要使某台服务器成为namenode,必须在要core-site.xml中指定它;要使某个节点成为jobtracker,必须在mapred-site.xml指定它,这个参见第5点中的core-site.xml以及mapred-site.xml的配置。

对Hadoop来说,从hdfs的角度来看有namenode及datanode,namenode只能够有一个,而datanode可以有多个,namenode存放的是datanode中文件的元数据,客户端通过namenode获取datanode中文件的信息;从jobtracker角度来说看有jobtracker及tasktracker,jobtracker只能够有一个,而tasktracker可以有多外,tasktracker通过jobtracker来调度。

在本例中使用192.168.56.101做为namenode及jobtracker,使用192.168.56.102做为secondarynamenode、datanode以及tasktracker,使用192.168.56.103做为datanode以及tasktracker,详情参见下面的配置。

2、三台服务器要具有一致的配置信息

1)、JDK的路径必须相同;

2)、操作Hadoop的用户必须相同;

3)、Hadoop的存放路径必须相同;

Slave机器上的hadoop可直接将namenode上面的hadoop拷贝过去,不用做任何修改,只要路径放置就可以了;

4)、每台机器~/.ssh目录下存放相同的id_rsa及authorized_keys

将namenode的机器上的~/.ssh/id_rsa及authorized_keys拷贝到每台slave机器上的~/.ssh中,当然slave机器中也必须是安装了ssh的了,然后在每台机器上都通过ssh访问一下其它的两台机器,确保都是可以不输入密码访问的。

5)、三台机器的/etc/profile中的内容相同;

3、修改$HADOOP_HOME/conf/slaves文件

这个文件存放的是所有datanode的IP或者机器名,每行指定一个。我们这里使用nginx2及nginx3来做为datanode,因此slaves文件的配置如下:

nginx2

nginx3

4、修改$HADOOP_HOME/conf/masters文件(此例中可选)

masters文件中放置的是secondarynamenode的机器名,其中默认的内容为“localhost”,但是在生产环境中,肯定不会将namenode和secondarynamenode放置在同一台服务器上,在此例中我就将secondarynamename设置在第二台服务器上,那么此时文件中的内容应该如下:

#这里只使用一台做为secondarynamenode

nginx2

#nginx3

5、修改core-site.xml、mapred-site.xml及hdfs-site.xml

只需要做简单的修改就可以了,不同点以红色字体标识出。

core-site.xml:

<configuration>

<property>

<!-- 用于设置Hadoop的文件系统,由URI指定,value对应的服务器就是namenode所在的服务器及端口,secondarynamenode通过在masters这个文件中指定 -->

<name>fs.default.name</name>

<value>hdfs://nginx1:9000</value>

</property>

<property>

<!-- 配置Hadoop的临时目录,默认在/tmp目录下,但是/tmp上面可能会被系统自动清理掉。-->

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

<!-- 目录如果不存在,需要手动创建 -->

<value>/home/fenglibin/hadoop_tmp</value>

<description>A base for other temperary directory</description>

</property>

</configuration>

mapred-site.xml:

<configuration>

<property>

<!-- value对应的值为jobtracker所在的服务器及端口,tasktracker在slaves中指定 -->

<name>mapred.job.tracker</name>

<value>nginx1:9001</value>

</property>

</configuration>

hdfs-site.xml:

<configuration>

<property>

<!-- 指定其副本数,value的值表示副本的数量 -->

<name>dfs.replication</name>

<!-- 这里有两台datanode -->

<value>2</value>

</property>

</configuration>

6、启动验证

6.1查看进程

DataNode都是通过NameNode启动起来的,因而启动的时候只需要在NameNode上执行start-all.sh就可以了,此时我们查看各服务器中的进程。

Nginx1(NameNode)所在服务器:

fenglibin@ubuntu1110 :/usr/local/hadoop-1.2.1$ jps

2834 NameNode

3011 JobTracker

3108 Jps

Ngnix2:

fenglibin@ubuntu11102:~$ jps

984 DataNode

1075 TaskTracker

919 SecondaryNameNode

1420 Jps

Ngnix3:

fenglibin@ubuntu11103:~$ jps

1374 Jps

1021 TaskTracker

846 DataNode

从上面的进程信息,可以看到nginx1中启动了namenode及jobtracker,,nginx2和nginx3都分别启动了DataNode及TaskTracker,只是nginx2中比nginx3中多启动了一个SecondaryNameNode,这也是我们希望的结果。

通过如下命令:

hadoop dfsadmin -report

可得到如下输出:

Warning: $HADOOP_HOME is deprecated.

Safe mode is ON

Configured Capacity: 15283421184 (14.23 GB)

Present Capacity: 10592149504 (9.86 GB)

DFS Remaining: 10591629312 (9.86 GB)

DFS Used: 520192 (508 KB)

DFS Used%: 0%

Under replicated blocks: 20

Blocks with corrupt replicas: 0

Missing blocks: 0

-------------------------------------------------

Datanodes available: 2 (2 total, 0 dead)

Name: 192.168.56.102:50010

Decommission Status : Normal

Configured Capacity: 7641710592 (7.12 GB)

DFS Used: 307200 (300 KB)

Non DFS Used: 2733502464 (2.55 GB)

DFS Remaining: 4907900928(4.57 GB)

DFS Used%: 0%

DFS Remaining%: 64.23%

Last contact: Sun Jun 15 15:46:39 CST 2014

Name: 192.168.56.103:50010

Decommission Status : Normal

Configured Capacity: 7641710592 (7.12 GB)

DFS Used: 212992 (208 KB)

Non DFS Used: 1957769216 (1.82 GB)

DFS Remaining: 5683728384(5.29 GB)

DFS Used%: 0%

DFS Remaining%: 74.38%

Last contact: Sun Jun 15 15:46:39 CST 2014

6.2 集群状态监控页面

查看namenode的状态

namenode是布署在192.168.56.101上,只需要输入:

http://192.168.56.101:50070

即可查看namenode的状态,如下图所示:

查看jobtracker的状态

因jobtracker和namenode是布署在同一台机器上的,输入:

http://192.168.56.101:50030

即可查看jobtracker的状态,如下图所示:

查看secondarynamenode的状态

Secondarynamenode是布署在192.168.56.102上面,输入:

http://192.168.56.102:50090

即可查看其状态,如下:

查看192.168.56.102上面的tasktracker的状态,打入:

http://192.168.56.102:50060

查看状态,如下:

从上面可以看出,监控的服务,都是以“500*”端口对外提供服务,不过这里发现一个问题,同为datanode以及tasktracker的192.168.56.103上面却没有开启一个“500*”这样的端口,而192.168.56.102上却开启除secondarynamenode之外的其它4个“500*”这样的端口:

192.168.56.102:

其中端口50090是secondarynamenode的监控端口,而50060是tasktracker的监控端口,而50010、50075以及50020都是datanode使用的端口。

而在192.168.56.103上,却只开了两个端口:

分别与namenode以及jobtracker相连着的。

为什么在192.168.56.103上面tasktracker以及datanode的监控呢?

版权声明:本文为博主原创文章,未经博主允许不得转载。

转载于:https://my.oschina.net/u/2007965/blog/493969

Hadoop入门进阶步步高(五)-搭建Hadoop集群相关推荐

  1. Hadoop入门进阶步步高(一)-环境准备

    前言 Hadoop从存储上来说,是相似于冗余磁盘阵列(RAID)的存储方式.将数据分散存储并提供以提供吞吐量,它的存储系统就是HDFS(Hadoop Distuibute Fils System).从 ...

  2. Hadoop入门进阶步步高(三-配置Hadoop

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 三.配置 ...

  3. Hadoop入门进阶步步高(六-Hadoop1.x与Hadoop2的区别

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 六.Ha ...

  4. Hadoop入门进阶步步高(四)-测试Hadoop

    2019独角兽企业重金招聘Python工程师标准>>> 四.测试Hadoop 一个简单的求每年温度最大值的程序. 1.准备两个文本测试数据 准备两个名为data1.txt及data2 ...

  5. Hadoop入门进阶步步高(二)-目录介绍

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 二.Ha ...

  6. 从零搭建生产Hadoop集群(五)——CDH集群修改主机名与IP

    从零搭建生产Hadoop集群(五)--CDH集群修改主机名与IP 一.概述 二.完整步骤 1.官网推荐步骤: (1)验证下SSL/TLS认证是否所有服务都有配备,确认创建新的SSL/TLS认证. (2 ...

  7. hadoop安装部署(伪分布及集群)

    hadoop安装部署(伪分布及集群) @(HADOOP)[hadoop] hadoop安装部署伪分布及集群 第一部分伪分布式 一环境准备 二安装hdfs 三安装YARN 第二部分集群安装 一规划 一硬 ...

  8. 第六天 - 安装第二、三台CentOS - SSH免密登陆 - hadoop全分布式安装、配置、集群启动

    第六天 - 安装第二.三台CentOS - SSH免密登陆 - hadoop全分布式安装.配置.集群启动 第六天 - 安装第二.三台CentOS - SSH免密登陆 - hadoop全分布式安装.配置 ...

  9. Kafka学习之(五)搭建kafka集群之Zookeeper集群搭建

    Zookeeper是一种在分布式系统中被广泛用来作为:分布式状态管理.分布式协调管理.分布式配置管理.和分布式锁服务的集群.kafka增加和减少服务器都会在Zookeeper节点上触发相应的事件kaf ...

  10. Kubernetes入门--搭建Kubernetes集群,并启动容器服务

    英文原作者:Ben Cane  翻译作者:Miazzy 翻译&转载:https://blog.codeship.com/getting-started-with-kubernetes/ Kub ...

最新文章

  1. 没想到租房也要会编程?
  2. 阿里云linux centos 一键部署web环境--图文详解
  3. 释疑の采购订单的批量修改
  4. 转载:matlab 字符串和变量名互换
  5. java注册登录客户端_GitHub - a-voyager/LoginSystem_Client: 登录注册系统(桌面客户端)——Java课程实践...
  6. mysql分页查询_4种MySQL分页查询优化的方法,你知道几个?
  7. HDFS的API操作-获取文件列表信息
  8. 第2章 数据认知与预处理
  9. C++学习之路 | PTA乙级—— 1083 是否存在相等的差 (20 分)(精简)
  10. 小C的数学问题 线段树+分治
  11. Python 爬取 6271 家死亡公司数据,一眼看尽十年创业公司消亡史!
  12. Yii框架上传后展示图片
  13. BZOJ4519 CQOI2016不同的最小割(最小割+分治)
  14. python调用bing翻译API V2
  15. QC新7大手法全面详解
  16. distpicker联动失效问题
  17. Linux桌面版横评:九、Mandriva Linux 2007 Spring One
  18. 论文笔记 PCL: Proposal Cluster Learning for Weakly Supervised Object Detection - TPAMI 2018
  19. 数据价值应用——数据分析
  20. 在利用PS进行绘画时,线条画不直怎么办?

热门文章

  1. 16位顶尖对冲基金大佬:畅谈量化投资的下个10年!
  2. 星环TDH助力南方基金数据中心迈入大数据时代
  3. 【路径规划】基于matlab果蝇优化算法机器人路径规划【含Matlab源码 677期】
  4. 【人脸识别】基于matlab GUI肤色人脸识别定位【含Matlab源码 674期】
  5. 【优化算法】改进型的LMS算法-NLMS算法【含Matlab源码 631期】
  6. 【数字信号】基于GUI数字波束算法库【含Matlab源码 313期】
  7. php 判断是否在线,关于判断用户是否在线的问题!!!
  8. java 线程池_Java 线程池 ThreadPoolExecutor 八种拒绝策略浅析
  9. win7如何设置wifi热点_win7台式机如何设置IP地址为固定的IP地址?
  10. 软件蓝图设计_智能企业的设计蓝图