VMware Workstation 9下基于Ubuntu 12.10服务器版本的Hadoop集群的配置

6 篇文章 0 订阅
2 篇文章 0 订阅

VMware Workstation 9下基于Ubuntu 12.10服务器版本的Hadoop集群的配置

(主要参照http://os.51cto.com/art/201211/363116.htm)

一、概述

其实,网上关于Hadoop集群的配置的资料不可谓不少,但是,细细找来,多半是在有图形桌面的环境下搭建的。而我们知道,真正要运行Hadoop集群,我们想要更多的资源用来集中数据的处理与稳定,最理想的莫过于用类UNIX系统的服务器版本,更好面对要核心——要解决的问题,而不用浪费资源去做可视化,去显示什么。但是真正要用服务器版类UNIX的OS,面对无图形界面的操作系统,要想像平时用OS那么自然,可也绝非易事,好在网上资源不少,东找西凑,也算是最终完成了任务。

好了,言归正转,还是就核心要解决的问题来讲述吧(这几天的失落也算明白了——面对工程、工作,要百分之百地记住自己的项目任务,先集中精力把自己要解决的问题解决,查找最直接解决自己问题的资料,哪怕自己过程中遇到多少自己不懂、很想去了解的,也先不要去查,解决了手头上的问题,业余再去查查;还有,参照一篇文章的步骤,就一定只按其完整走一遍,不然,这里是用这篇的内容和步骤,那里又用别的内容和步骤,出现的错误就会莫名其妙——个人经验和教训O(∩_∩)O哈哈~)

搭建Hadoop集群的大致步骤都一样;

1、     选择好虚拟机,下载并安装好,然后在用中熟悉下,虚拟机有很多:VirtualBox,KVM、VMare公司的一系列的,什么ESXi(自己还想去弄清楚的,目前还不清楚)、Workstation、vSphere(自己还想去弄清楚的,目前还不清楚)等等;在这里,我选择了VMware Workstation9.0,是出于与前辈的虚拟镜像兼容,个人也推祟VirtualBox,一是其开源,二是因为其体积比VMware Workstation小得多,对于硬件资源紧张的人来说,尤其如此。

2、     下载好客户机要用的OS,并用虚拟机装入和新建虚拟机。这里,我先选择的是最新的Ubuntu12.10服务器版(64位),因为个人PC上内存还算较大,主机OS也是64位版的。

3、     在装好的虚拟机的客户机OS中下载和安装好JDK和Hadoop的相应版本,安装JDK是因为Hadoop是用JAVA写的,运行肯定需要JAVA支持,至于JDK,用的最广的是Sun公司的JDK,但是据《Hadoop:The definitive guide》的附录A(page:656)所说,其它版本的JDK也行,所以,这里就直接用Ubuntu资源库里所提供的OpenJDK。(这里还有一个经验和教训,就是;尽量将部署Hadoop到其它各机器的工作延迟到最后,这样可以节省大量劳力,也避免名种配置的失误,当然,另一方面,也会出现一个配错,导致各机上都配置错误,但此时,一亘错误定位了,其它机子上改也不是太麻烦

4、     配置好SSH、JAVA_HOME(指向JDK的路径)和Hadoop的几个核心文件的配置——在hadoop-env.sh中指出JDK的路径、配置好Hadoop的conf目录下的core-site.xml  和Hadoop的HDFS的配置(conf目录下的hdfs-site.xml)和Hadoop的MapReduce 的配置(conf目录下的mapred-site.xml)

5、     确认好这台客户机的所有环境配置好后,再将其复制(克隆)到其它客户机中,然后各机IP、/etc/hosts和/etc/hostname作相应的改动

6、     测试Hadoop集群是否运行正常(这里的一个经验是:检验Hadoop 集群的固定步骤是——先运行hadoop version命名,看是否出现Hadoop的版本信息,如果未出现,一般是JDK没装好或者是指向JDK的路径错误,路径指向没错误码的话,就看是不是你对应所属的用户和组有没有相应权限;再运行hadoop namenode –format命令,这个如果不能运行,尤其是出现找不到mainclass类的话,最直接的办法就是换一个版本的Hadoop试试,因为有可能你的Hadoop源来自不太完备的版本;最后运行start-dfs.sh命令和start-mapred.sh命令,如果出现相应的问题,建议首先不要忙着去Google、百度,即使要去,也先要将问题定位清楚,即看看DataNode的 logs目录中的日志,再去找解决办法,比如我就碰到一种情况是:各namenode、datanode和tasktracker、jobtracker运行正常,但hadoop dfsadmin –report却报告没有datanode活着,最后看了日志后去找相应问题的解决办法

http://serverfault.com/questions/392733/hadoop-slave-nodes-not-connecting,原来,这种情况理多的是出自ip设置的问题(而不是Hadoop的配置问题),最后我将/etc/network/interfaces中相应的127.0.1.1 master注释掉即解决了,这些问题解决了基本就没问题了;最后就是运行下wordcount而已

二、详细步骤

1、搭建环境前的准备、计划:

VM中虚拟了4台机子,分别起名为:

master        (ubuntu 12.10 64bit,内存:2G,硬盘:80G),

son-1         (ubuntu 12.10 64bit,内存:1G,硬盘:80G),

son-2         (ubuntu 12.10 64bit,内存:1G,硬盘:80G),

son-3         (ubuntu 12.10 64bit,内存:1G,硬盘:80G)。

修改本机的host文件,

 sudo gedit /etc/hosts

在后面添加内容为:

192.168.200.104 master
192.168.200.105 son-1
192.168.200.106 son-2
192.168.200.107 son-3

         当然,本机的hostname,即在/etc/hostname文件中,应是

master

2、选择虚拟机,下载并安装好。

这个一般是傻瓜式的,如果能汉化,就汉化吧,这样对于我们的工作也轻松多了,这里,我选择的是VMware Workstation9.0;

3、下载好客户机要用的OS,并用虚拟机装入。

这里,我先选择的是最新的Ubuntu12.10服务器版(64位)。这里,VMware对其设置网卡为采用NAT或Bridged,反正只要是为了使客户机OS能够连接外网,这样,我们的客户机的服务器OS就可以直接下载SSH、OpenJDK和Hadoop等相关资源;

 4、为本机(master)和子节点(son..)分别创建hadoop用户和用户组,

其实ubuntu和centos下创建用户还多少还是有点区别的。

ubuntu下创建:

先创建hadoop用户组:

 sudo addgroup hadoop

然后创建hadoop用户:

 sudo adduser -ingroup hadoop hadoop

centos和 redhat 下创建:

 sudo adduser hadoop

注:在centos 和 redhat下直接创建用户就行,会自动生成相关的用户组和相关文件,而ubuntu下直接创建用户,创建的用户没有家目录。

给hadoop用户添加权限,打开/etc/sudoers文件;

 sudo gedit /etc/sudoers

按回车键后就会打开/etc/sudoers文件了,给hadoop用户赋予root用户同样的权限。

在root  ALL=(ALL:ALL)   ALL下添加hadoop  ALL=(ALL:ALL)  ALL,

 hadoop  ALL=(ALL:ALL) ALL

5、客户机OS中下载和安装好JDK、SSH和Hadoop的相应版本

(1)为本机(master)和子节点(son..)安装JDK环境。

ubuntu下一条命令即可:

 sudo apt-get install openjdk-7-jre

centos和redhat建议下载源码安装。

详见:http://www.db89.org/post/2012-07-02/centosjava

(2) 修改 本机(master)和子节点(son..)机器名

打开/etc/hostname文件;

 sudo gedit /etc/(相应的hostname

分别修改为:master   son-1  son-2   son-3  son-4。这样有利于管理和记忆!

(3) 本机(master)和子节点(son..)安装ssh服务

主要为ubuntu安装,cents和redhat系统自带。

ubuntu下:

 sudo apt-get install ssh openssh-server

这时假设您已经安装好了ssh,您就可以进行第六步了哦~

(4)先为建立ssh无密码登录环境

做这一步之前首先建议所有的机子全部转换为hadoop用户,以防出现权限问题的干扰。

切换的命令为:

 su - hadoop

ssh生成密钥有rsa和dsa两种生成方式,默认情况下采用rsa方式。

(4.1) 创建ssh-key,,这里我们采用rsa方式;

ssh-keygen -t rsa -P ""

(注:回车后会在~/.ssh/下生成两个文件:id_rsa和id_rsa.pub这两个文件是成对出现的)

(4.2) 进入~/.ssh/目录下,将id_rsa.pub追加到authorized_keys授权文件中,开始是没有authorized_keys文件的;

cd ~/.ssh
cat id_rsa.pub >> authorized_keys

(5) 为本机mater安装hadoop

我们采用的hadoop版本是来自较稳定的、旧的achive库中(可以用ubuntu命令直接下载的):hadoop-0.22.0(http://archive.apache.org/dist/hadoop/core/hadoop-0.22.0/ ),因为该版本比较稳定。

(5-1) 在/home/hadoop目录下,此时由上已说,我们是用hadoop用户身份的

sudo wget -c http://archive.apache.org/dist/hadoop/core/hadoop-0.22.0/ hadoop-0.22.0.tar.gz

(5-2) 解压hadoop-0.20.203.tar.gz

sudo tar -zxf hadoop-0.22.0.tar.gz

(5-3)将解压出的文件夹改名为hadoop

 sudo mv hadoop-0.22.0.tar.gz hadoop

(5-4) 将该hadoop文件夹的属主用户设为hadoop,

 sudo chown -R hadoop:hadoop hadoop

(5-6) 打开hadoop/conf/hadoop-env.sh文件;

 sudo gedit hadoop/conf/hadoop-env.sh

(5-7) 配置conf/hadoop-env.sh(找到#exportJAVA_HOME=...,去掉#,然后加上本机jdk的路径);

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk(一般都是在/usr/lib/jvm/目录下)

(5-8)打开conf/core-site.xml文件;

 sudo gedit hadoop/conf/core-site.xml

编辑如下:

1.  <?xml version="1.0"?> 

2.  <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>                                                        

3.  <!-- Put site-specific property overrides in this file. -->                                                    

4.  <configuration> 

5.  <property>    

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

7.    <value>hdfs://master:9000</value>     

8.   </property>    

9.  </configuration> 

(5-9) 打开conf/mapred-site.xml文件;

 sudo gedit hadoop/conf/mapred-site.xml

编辑如下:

1.  <?xml version="1.0"?> 

2.  <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>                                                  

3.  <!-- Put site-specific property overrides in this file. -->                                                  

4.      <configuration>    

5.       <property>     

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

7.        <value>master:9001</value>     

8.       </property>    

9.      </configuration> 

(5-10) 打开conf/hdfs-site.xml文件;

 sudo gedit hadoop/conf/hdfs-site.xml

编辑如下:

1.  <configuration> 

2.  <property> 

3.  <name>dfs.name.dir</name> 

4.  <value>/usr/local/hadoop/datalog1,/usr/local/hadoop/datalog2</value> 

5.  </property> 

6.  <property> 

7.  <name>dfs.data.dir</name> 

8.  <value>/usr/local/hadoop/data1,/usr/local/hadoop/data2</value> 

9.  </property> 

10. <property> 

11. <name>dfs.replication</name> 

12. <value>2</value> 

13. </property> 

14. </configuration> 

(5-11)打开conf/masters文件,添加作为secondarynamenode的主机名,这里需填写 master 就Ok了。

 sudo gedit hadoop/conf/masters

里面,这里填上master

(5-12)打开conf/slaves文件,添加作为slave的主机名,一行一个。

 sudo gedit hadoop/conf/slaves

这里填成下列的内容 :

1.  son-1  

2.  son-2  

3.  son-3  

6、客户机的所有环境配置好后,再将其复制(克隆)到其它客户机

先将这个客户OS——master克隆出son-1、son-2、son-3

要将master机器上的文件一一复制到datanode机器上(son-1,son-2,son-3都要复制):(这里以son-1为例子)

1. 公钥的复制

 scp ~/.ssh/id_rsa.pub hadoop@son-1:~/.ssh/id_rsa.pub.master

2. hostname文件的修改

打开/etc/hostname,这时去掉原来的内容,填入:son-1

3. hadoop文件夹的复制,其中的配置也就一起复制过来了!

 scp -r /home/hadoop/hadoop hadoop@son-1:~

并且要将所有节点的hadoop的目录的权限进行如下的修改:

 sudo chown -R hadoop:hadoop hadoop

这些东西都复制完了之后,datanode机器还要将复制过来的公钥追加到收信任列表:

在每个子节点的自己种都要操作。

 cat ~/.ssh/id_rsa.pub.master >>  ~/.ssh/authorized_keys

这样环境已经基本搭建好了,现在开始测试一下。

7、           测试Hadoop集群是否运行正常

检验Hadoop 集群的固定步骤是——

(1)      先运行hadoop version命名,看是否出现Hadoop的版本信息,如果未出现,一般是JDK没装好或者是指向JDK的路径错误,路径指向没错误的话,就看是不是你对应所属的用户和组有没有相应权限;

(2)      再运行hadoop namenode –format命令,这个如果不能运行,尤其是出现找不到mainclass类的话,最直接的办法就是换一个版本的Hadoop试试,因为有可能你的Hadoop源来自不太完备的版本;最后运行start-dfs.sh命令和start-mapred.sh命令,如果出现相应的问题,建议首先不要忙着去Google、百度,即使要去,也先要将问题定位清楚,即看看DataNode的 logs目录中的日志,再去找解决办法,比如我就碰到一种情况是:各namenode、datanode和tasktracker、jobtracker运行正常,但hadoop dfsadmin –report却报告没有datanode活着,最后看了日志后去找相应问题的解决办法

http://serverfault.com/questions/392733/hadoop-slave-nodes-not-connecting,原来,这种情况理多的是出自ip设置的问题(而不是Hadoop的配置问题),最后我将/etc/network/interfaces中相应的127.0.1.1 master注释掉即解决了,这些问题解决了基本就没问题了;

(3)      最后就是运行下wordcount而已

效果如图(命令也可参照)



  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值