基于Hadoop-0.20.2的完全分布式集群搭建详细过程
之前的学习都是基于伪分布式环境,但是要想深入学习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个结点的主机名是一样的),重命名主机名的方法:
<code>sudo gedit /etc/hostname </code>
通过修改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地址分别为:
<code>192.168.130.235 192.168.130.237 192.168.130.238 </code>
如果IP地址不在同一局域网内可以通过ifconfig命令更改结点的IP地址,如果你需要修改很多节点IP,可通过shell脚本来分别执行,省时简单,脚本如下:
<code>#!/bin/bash sudo ifconfig eth0 192.168.130.235 sudo route add default gw 192.168.130.1 </code>
在这里IP地址和网关修改成你自己需要的,注意:
1.每个节点IP不一样,运行前需修改。
2.脚本没权限,需添加权限。
<code>sudo chown +x 脚本的名字.sh </code>
3.每次重启虚拟机,IP需重新设置。
将每个结点的IP地址设置完成后,就可以配置每个节点的hosts文件了。执行
<code>sudo gedit /etc/hosts </code>
添加:
<code>192.168.130.235 s15 192.168.130.237 s17 192.168.130.238 s18 </code>
格式:
<code>节点IP 别名 </code>
二、建立hadoop运行帐号
即为hadoop集群专门设置一个用户组及用户,这部分比较简单,参考示例如下:
<code>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用户中 </code>
上述三个节点均需要进行以上步骤来完成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节点,
<code>cd .ssh scp hadoop@s15:~/.ssh/id_dsa.pub ./master_dsa.pub cat master_dsa.pub >> authorized_keys </code>
进入s18节点,
<code>cd .ssh scp hadoop@s15:~/.ssh/id_dsa.pub ./master_dsa.pub cat master_dsa.pub >> authorized_keys </code>
进入s15节点,
<code>cd .ssh scp hadoop@s15:~/.ssh/id_dsa.pub ./master_dsa.pub cat master_dsa.pub >> authorized_keys </code>
在这里我并没有这样做,希望大家自己测试,如果有问题还望指出。
特别说明:如果之前按照《搭建Hadoop-0.20.2环境(伪分布式)》已经搭建好伪分布式环境再复制第二个、第三个节点,上述配置ssh免密码连入可略过。
四、下载并解压hadoop安装包
可参考《搭建Hadoop-0.20.2环境(伪分布式)》中的搭建流程中的第七步:安装hadoop(1-4)。
五、配置namenode之修改site文件
在本文中s15节点做为namenode,所以下面配置针对s15中的site文件。
1、打开conf/core-site.xml文件,编辑如下:
<code><?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> </code>
注意:如果按照之前的《搭建Hadoop-0.20.2环境(伪分布式)》搭建配置,对比不同。
2、打开conf/mapred-site.xml文件,编辑如下:
<code><?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> </code>
注意1:如果按照之前的《搭建Hadoop-0.20.2环境(伪分布式)》搭建配置,对比不同。
注意2:192.168.130.235为master(s15)的IP。
3、打开conf/hdfs-site.xml文件,编辑如下:
<code><?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> </code>
注意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的主机名,一行一个。因为是完全分布式,只有两个个节点,添加:
<code>s17 s18 </code>
八、向各节点复制hadoop
如果在一个节点设置hadoop,然后打包使用scp指令,复制其它节点解压即可。
特别说明:如果是复制已经搭建好的伪分布式环境,只需按照上述修改配置即可。
九、格式化namenode
如果之前在使用伪分布式的环境下格式化,使用过,需将hdfs,tmp文件删除。
然后在主节点master(s15)上,执行,
<code>bin/hadoop namenode -format </code>
注意:上面只要出现“successfully formatted”就表示成功了。
十、启动hadoop
这一步也在主结点master(s15)上进行操作,执行,
<code>bin/start-all.sh </code>
十一、用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运行
<code>bin/hadoop jar hadoop-0.20.2-examples.jar wordcount input output </code>
操作同伪分布式模式下,详情参考《运行WordCount》
原文地址:基于Hadoop-0.20.2的完全分布式集群搭建详细过程, 感谢原作者分享。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

热门话题

节点从ProxmoxVE彻底撤离及再次加入集群场景描述当ProxmoxVE集群中有节点损坏无法快速修复时,需要将故障节点干净的从集群踢出,并把残留信息清理干净。否则,新的节点用故障节点曾使用用的IP的地址将不能正常加入集群;同样,从集群中脱离出来的故障节点修复后,虽然与集群已经毫无关系,但访问此单节点的Web管理后台,将出现原ProxmoxVE集群其它节点的信息,非常恼火。从集群中驱逐节点如果ProxmoxVE是Ceph超融合集群,需要登录集群任意节点(欲删除节点除外)宿主系统Debian,命令

如何使用Redis实现分布式数据同步随着互联网技术的发展和应用场景的日益复杂,分布式系统的概念越来越被广泛采用。在分布式系统中,数据同步是一个重要的问题。Redis作为一个高性能的内存数据库,不仅可以用来存储数据,还可以用来实现分布式数据同步。对于分布式数据同步,一般有两种常见的模式:发布/订阅(Publish/Subscribe)模式和主从复制(Maste

玩家在雾锁王国中进行游戏时可以收集不同的材料用来建造建筑,有很多玩家想知道野地搭建筑吗,雾锁王国能野地是不能搭建筑的,必须要在祭坛的范围内才可以搭建。雾锁王国能野地搭建筑吗答:不能。1、雾锁王国能野地是不能搭建筑的。2、建筑必须要在祭坛的范围内才可以搭建。3、玩家可以自行放置灵火祭坛,但一旦离开了范围,将无法进行建筑搭建。4、我们也可以直接在山上挖个洞当做我们的家,这样不用耗建筑材料。5、玩家自己搭建的建筑中,存在舒适度机制,也就是说,内饰越好,舒适度越高。6、高舒适度将为玩家带来属性加成,例如

MongoDB是一个开源的NoSQL数据库,具有高性能、伸缩性和灵活性的特点。在分布式系统中,任务调度与执行是一个关键的问题,通过利用MongoDB的特性,可以实现分布式任务调度与执行的方案。一、分布式任务调度的需求分析在分布式系统中,任务调度是将任务分配给不同的节点进行执行的过程。常见的任务调度需求包括:1.任务的请求分发:将任务请求发送给可用的执行节点。

Redis如何实现分布式会话管理,需要具体代码示例分布式会话管理是当下互联网热门话题之一,面对高并发、大数据量的场景,传统的会话管理方式逐渐显得力不从心。Redis作为一个高性能的键值数据库,提供了分布式会话管理的解决方案。本文将介绍如何使用Redis实现分布式会话管理,并给出具体的代码示例。一、Redis作为分布式会话存储介绍传统的会话管理方式是将会话信

在当今云计算时代,容器化技术已经成为开源界最受欢迎的技术之一。Docker的出现使得云计算变得更加便捷、高效,成为了开发人员、运维人员不可或缺的工具。而多节点集群技术的应用更是在Docker的基础上被广泛使用。通过多节点集群部署,我们可以更加有效地利用资源,提高可靠性和可扩展性,同时也能更加灵活地进行部署和管理。接下来,我们将为大家介绍如何使用Docker进

如何使用Swoole实现分布式定时任务调度引言:在传统的PHP开发中,我们经常会使用cron来实现定时任务调度,但是cron只能在单台服务器上执行任务,无法应对高并发的场景。而Swoole是一款基于PHP的高性能异步并发框架,它提供了完善的网络通信能力和多进程支持,使得我们能够轻松实现分布式定时任务调度。本文将介绍如何使用Swoole来实现分布式定时任务调度

利用Redis实现分布式任务调度随着业务的扩展和系统的发展,很多业务都需要实现分布式任务调度,以确保任务能够在多个节点上同时执行,从而提高系统的稳定性和可用性。而Redis作为一款高性能的内存数据存储产品,具备分布式、高可用、高性能等特点,很适合用于实现分布式任务调度。本文将介绍如何利用Redis实现分布式任务调度,并提供相应的代码示例。一、Redis的基
