0

0

基于Hadoop-0.20.2的完全分布式集群搭建详细过程

php中文网

php中文网

发布时间:2016-06-07 16:38:12

|

1719人浏览过

|

来源于php中文网

原创

之前的学习都是基于伪分布式环境,但是要想深入学习hadoop数据分析技术,就必须将hadoop集群搭建起来。 说来简单,但是应该怎么做呢?不急,本文的主要目的就是流水式的记录,看了之后也能够亲自动手实施这些过程。由于资源问题,只能通过虚拟机来实施模 拟

之前的学习都是基于伪分布式环境,但是要想深入学习hadoop数据分析技术,就必须将hadoop集群搭建起来。

说来简单,但是应该怎么做呢?不急,本文的主要目的就是流水式的记录,看了之后也能够亲自动手实施这些过程。由于资源问题,只能通过虚拟机来实施模 拟集群环境,虽然说是虚机模拟,但是在虚机上的hadoop的集群搭建过程也可以使用在实际的物理节点中,思想是一样的。如果你有足够的节点也可以在虚拟 机上进行一些其它实验测试,这是最好不过的了。

资源介绍:

笔记本一台(自己的) 内存4G 双核四线程 台式机一台(导师的) 内存4G 双核四线程

两台电脑软件情况:

Win7 64位

Vmware-9.0.2

虚拟机情况:

ubuntu-12.04

hadoop-0.20.2

jdk-8u5-linux-i586-demos

准备过程:

环境准备:《搭建Hadoop-0.20.2环境(伪分布式)》 附:后面多次使用。
节点准备:

其实这一步骤非常简单,如果你已经完成了搭建Hadoop-0.20.2环境(伪分布式)这一步,此时你已经准备好了第一个虚拟节点,那第二个和第 三个虚拟机节点如何准备?可能你已经想明白了,你可以按之前那一步的方法,再分别安装两遍Ubuntu系统,就分别实现了第二、三个虚拟机节点。不过这个 过程估计会让你很崩溃,其实还有一个更简单的方法,就是复制和粘贴,没错,就是在你刚安装好的第一个虚拟机节点,将整个系统目录进行复制,形成第二和第三 个虚拟机节点。简单吧。

说明1:其实在这里如果你在复制第一个节点的时候已经将伪分布式环境搭建好,那么复制第二个节点,第三个节点的时候那么SSH已经可以互通。

说明2:如果在第一个节点已经实现伪分布式环境基础上复制的第二个、第三个节点,需要重新配置三个节点中conf文件夹中配置文件。

很多人也许会问,这三个结点有什么用,原理很简单,按照hadoop集群的基本要求,其中一个是master结点,主要是用于运行hadoop程序 中的namenode、secondorynamenode和jobtracker任务。用外两个结点均为slave结点,其中一个是用于冗余目的,如果 没有冗余,就不能称之为hadoop了,所以模拟hadoop集群至少要有三个结点,如果电脑配置非常高,可以考虑增加一些其它的结点。slave结点主 要将运行hadoop程序中的datanode和tasktracker任务。

所以,在准备好这三个结点之后,需要分别将linux系统的主机名重命名(因为前面是复制和粘帖操作产生另两上结点,此时这3个结点的主机名是一样的),重命名主机名的方法:

sudo gedit /etc/hostname

通过修改hostname文件即可,这三个点结均要修改,以示区分。

以下是我对三个结点的ubuntu系统主机分别命名为:s15(master), s17(slave), s18(slave)

搭建流程:

一、配置hosts文件

二、建立hadoop运行帐号

三、配置ssh免密码连入

四、下载并解压hadoop安装包

五、配置namenode之修改site文件

六、配置hadoop-env.sh文件

七、配置masters和slaves文件

八、向各节点复制hadoop

九、格式化namenode

十、启动hadoop

十一、用jps检验各后台进程是否成功启动

十二、通过webUI查看集群情况

一、配置hosts文件

先简单说明下配置hosts文件的作用,它主要用于确定每个结点的IP地址,方便后续master(s15)结点能快速查到并访问各个结点。在上述 3个虚机结点上均需要配置此文件。由于需要确定每个结点的IP地址,所以在配置hosts文件之前需要先查看当前虚机结点的IP地址是多少,可以通过 ifconfig命令进行查看,如本实验中,s15,s17,s18结点的IP地址分别为:

192.168.130.235
192.168.130.237
192.168.130.238

如果IP地址不在同一局域网内可以通过ifconfig命令更改结点的IP地址,如果你需要修改很多节点IP,可通过shell脚本来分别执行,省时简单,脚本如下:

#!/bin/bash
sudo ifconfig eth0 192.168.130.235
sudo route add default gw 192.168.130.1

在这里IP地址和网关修改成你自己需要的,注意:
1.每个节点IP不一样,运行前需修改。
2.脚本没权限,需添加权限。

sudo chown +x 脚本的名字.sh

3.每次重启虚拟机,IP需重新设置。

将每个结点的IP地址设置完成后,就可以配置每个节点的hosts文件了。执行

Sesame AI
Sesame AI

一款开创性的语音AI伴侣,具备先进的自然对话能力和独特个性。

下载
sudo gedit /etc/hosts

添加:

192.168.130.235 s15
192.168.130.237 s17
192.168.130.238 s18

格式:

节点IP 别名

二、建立hadoop运行帐号

即为hadoop集群专门设置一个用户组及用户,这部分比较简单,参考示例如下:

sudo groupadd hadoop//设置hadoop用户组
sudo useradd –s /bin/bash –d /home/hadoop –m hadoop –g hadoop –G admin   //添加一个hadoop用户,此用户属于hadoop用户组,且具有admin权限。  
sudo passwd 123456   //设置用户hadoop登录密码
su hadoop   //切换到hadoop用户中

上述三个节点均需要进行以上步骤来完成hadoop运行帐号的建立。

特别说明:如果之前按照《搭建Hadoop-0.20.2环境(伪分布式)》已经搭建好伪分布式环境再复制第二个、第三个节点,上述添加运行账号可略过。

三、配置ssh免密码连入

这一环节最为重要,而且也最为关键,如果这一步走成功了,后面环节进行的也会比较顺利。

SSH主要通过RSA算法来产生公钥与私钥,在数据传输过程中对数据进行加密来保障数据的安全性和可靠性,公钥部分是公共部分,网络上任一结点均可 以访问,私钥主要用于对数据进行加密,以防他人盗取数据。总而言之,这是一种非对称算法,想要破解还是非常有难度的。Hadoop集群的各个结点之间需要 进行数据的访问,被访问的结点对于访问用户结点的可靠性必须进行验证,hadoop采用的是ssh的方法通过密钥验证及数据加解密的方式进行远程安全登录 操作,当然,如果hadoop对每个结点的访问均需要进行验证,其效率将会大大降低,所以才需要配置SSH免密码的方法直接远程连入被访问结点,这样将大 大提高访问效率。

1.每个结点分别产生公私密钥。可参考《搭建Hadoop-0.20.2环境(伪分布式)》中的搭建流程中的第五步:安装ssh服务。有图有真相。
2.单机回环ssh免密码登录测试。即在单机结点上用ssh进行登录,看能否登录成功。登录成功后注销退出。在第一步已经进行登陆测试了。
3.让主结点(master)能通过SSH免密码登录两个子结点(slave)。 为了实现这个功能,两个slave结点的公钥文件中必须要包含主结点的公钥信息,这样当master就可以顺利安全地访问这两个slave结点了。操作过程如下:

进入s17节点,

cd .ssh
scp  hadoop@s15:~/.ssh/id_dsa.pub ./master_dsa.pub
cat master_dsa.pub >> authorized_keys

进入s18节点,

cd .ssh
scp  hadoop@s15:~/.ssh/id_dsa.pub ./master_dsa.pub
cat master_dsa.pub >> authorized_keys

进入s15节点,

cd .ssh
scp  hadoop@s15:~/.ssh/id_dsa.pub ./master_dsa.pub
cat master_dsa.pub >> authorized_keys

在这里我并没有这样做,希望大家自己测试,如果有问题还望指出。

特别说明:如果之前按照《搭建Hadoop-0.20.2环境(伪分布式)》已经搭建好伪分布式环境再复制第二个、第三个节点,上述配置ssh免密码连入可略过。

四、下载并解压hadoop安装包

可参考《搭建Hadoop-0.20.2环境(伪分布式)》中的搭建流程中的第七步:安装hadoop(1-4)。

五、配置namenode之修改site文件

在本文中s15节点做为namenode,所以下面配置针对s15中的site文件。

1、打开conf/core-site.xml文件,编辑如下:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="http://www.cndwzone.com/archives/configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
  <name>fs.default.name</name>
  <value>hdfs://s15:9000</value> 
 </property> 
<property>
  <name>hadoop.tmp.dir</name>
  <value>/usr/local/hadoop/tmp</value> 
 </property> 
</configuration>

注意:如果按照之前的《搭建Hadoop-0.20.2环境(伪分布式)》搭建配置,对比不同。

2、打开conf/mapred-site.xml文件,编辑如下:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="http://www.cndwzone.com/archives/configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property> 
  <name>mapred.job.tracker</name>
  <value>192.168.130.235:9001</value> 
 </property>
</configuration>

注意1:如果按照之前的《搭建Hadoop-0.20.2环境(伪分布式)》搭建配置,对比不同。
注意2:192.168.130.235为master(s15)的IP。

3、打开conf/hdfs-site.xml文件,编辑如下:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="http://www.cndwzone.com/archives/configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
  <property>  
    <name>dfs.name.dir</name>  
    <value>/usr/local/hadoop/hdfs/name</value>  
  </property>  
  <property>  
    <name>dfs.data.dir</name>  
    <value>/usr/local/hadoop/hdfs/data</value>  
  </property>  
  <property>  
    <name>dfs.replication</name>  
    <value>2</value>  
  </property> 
</configuration>

注意1:如果按照之前的《搭建Hadoop-0.20.2环境(伪分布式)》搭建配置,对比不同。

六、配置hadoop-env.sh文件

每个节点这个需要根据实际情况来配置。参考《搭建Hadoop-0.20.2环境(伪分布式)》中的搭建流程的第七步:安装hadoop(6)。

七、配置masters和slaves文件

10、打开conf/masters文件,添加作为secondarynamenode的主机名,因为是完全分布式,只有一个节点,这里只需填写s15就可以。

11、打开conf/slaves文件,添加作为slave的主机名,一行一个。因为是完全分布式,只有两个个节点,添加:

s17
s18

八、向各节点复制hadoop

如果在一个节点设置hadoop,然后打包使用scp指令,复制其它节点解压即可。

特别说明:如果是复制已经搭建好的伪分布式环境,只需按照上述修改配置即可。

九、格式化namenode

如果之前在使用伪分布式的环境下格式化,使用过,需将hdfs,tmp文件删除。

然后在主节点master(s15)上,执行,

bin/hadoop namenode -format

注意:上面只要出现“successfully formatted”就表示成功了。

十、启动hadoop

这一步也在主结点master(s15)上进行操作,执行,

bin/start-all.sh

十一、用jps检验各后台进程是否成功启动

在主结点master(s15)上执行jps查看namenode,jobtracker,secondarynamenode进程是否启动。

在s17和s18结点执行jps查看datanode和tasktracker进程是否启动。

十二、通过webUI查看集群情况

在浏览器中输入:http://192.168.130.235:50030,网址中的IP为master(s15)结点所对应的IP地址。

至此,基于hadoop-0.20.2的完全分布式集群已经全部搭建完成。


附:基于Hadoop-0.20.2的完全分布式的wordcount运行

bin/hadoop jar hadoop-0.20.2-examples.jar wordcount input output

操作同伪分布式模式下,详情参考《运行WordCount》

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

通义千问
通义千问

阿里巴巴推出的全能AI助手

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

76

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

38

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

83

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

97

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

223

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

458

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

169

2026.03.04

Swift iOS架构设计与MVVM模式实战
Swift iOS架构设计与MVVM模式实战

本专题聚焦 Swift 在 iOS 应用架构设计中的实践,系统讲解 MVVM 模式的核心思想、数据绑定机制、模块拆分策略以及组件化开发方法。内容涵盖网络层封装、状态管理、依赖注入与性能优化技巧。通过完整项目案例,帮助开发者构建结构清晰、可维护性强的 iOS 应用架构体系。

246

2026.03.03

C++高性能网络编程与Reactor模型实践
C++高性能网络编程与Reactor模型实践

本专题围绕 C++ 在高性能网络服务开发中的应用展开,深入讲解 Socket 编程、多路复用机制、Reactor 模型设计原理以及线程池协作策略。内容涵盖 epoll 实现机制、内存管理优化、连接管理策略与高并发场景下的性能调优方法。通过构建高并发网络服务器实战案例,帮助开发者掌握 C++ 在底层系统与网络通信领域的核心技术。

34

2026.03.03

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
CSS3 教程
CSS3 教程

共18课时 | 7万人学习

Rust 教程
Rust 教程

共28课时 | 6.8万人学习

Django 教程
Django 教程

共28课时 | 4.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号