基于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脫衣器

Video Face Swap
使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++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.高舒適度將為玩家帶來屬性加成,例如

Redis如何實現分散式會話管理,需要具體程式碼範例分散式會話管理是當下網路熱門話題之一,面對高並發、大數據量的場景,傳統的會話管理方式逐漸顯得力不從心。 Redis作為一個高效能的鍵值資料庫,提供了分散式會話管理的解決方案。本文將介紹如何使用Redis實現分散式會話管理,並給出具體的程式碼範例。一、Redis作為分散式會話儲存介紹傳統的會話管理方式是將會話信

MongoDB是一個開源的NoSQL資料庫,具有高效能、擴充性和靈活性的特性。在分散式系統中,任務調度與執行是一個關鍵的問題,透過利用MongoDB的特性,可以實現分散式任務調度與執行的方案。一、分散式任務調度的需求分析在分散式系統中,任務調度是將任務分配給不同的節點進行執行的過程。常見的任務排程需求包括:1.任務的請求分發:將任務請求傳送給可用的執行節點。

在當今雲端運算時代,容器化技術已成為開源界最受歡迎的技術之一。 Docker的出現使得雲端運算變得更加便利、高效,成為了開發人員、維運人員不可或缺的工具。而多節點叢集技術的應用更是在Docker的基礎上被廣泛使用。透過多節點叢集部署,我們可以更有效地利用資源,提高可靠性和可擴展性,同時也能更靈活地進行部署和管理。接下來,我們將為大家介紹如何使用Docker進

利用Redis實現分散式快取一致性在現代分散式系統中,快取扮演著非常重要的角色。它可以大大降低系統對資料庫的存取頻率,提高系統的效能和吞吐量。而在分散式系統中,為了確保快取的一致性,我們需要解決多個節點之間的資料同步問題。在本文中,我們將介紹如何利用Redis實現分散式快取一致性,並給出具體的程式碼範例。 Redis是一個高效能的鍵值資料庫,它支援持久化、複製和集

如何使用Swoole實現分散式定時任務調度引言:在傳統的PHP開發中,我們經常使用cron來實現定時任務調度,但是cron只能在單一伺服器上執行任務,無法應對高並發的場景。而Swoole是一款基於PHP的高效能非同步並發框架,它提供了完善的網路通訊能力和多進程支持,使得我們能夠輕鬆實現分散式定時任務調度。本文將介紹如何使用Swoole來實現分散式定時任務調度
