分布式Hadoop的搭建(Ubuntu)

来源:互联网 发布:停车软件 编辑:程序博客网 时间:2024/05/27 00:49

      基本情况:自己搭建分布式Hadoop,有三台主机,局域网配置,其中一台为vm上的虚拟机,系统均为Ubuntu10.04

     基本准备工作:1.安装java。可以见之前写的一篇,三台都装上

                                 2.建立同一个用户。我的用户名全是dbrg,并赋予sudo权限,注意创建的时候用sudo,否则可能提示不能在home下创建相应目录。添加sudo权限:sudo usermod -G admin -a hostname

                                 3.修改三台主机的hostname。分别修改为dbrg1(作为master,即namenode)、dbrg2(作为slave1,即datanode)、dbrg3(作为slave2)

                                 4.网络配置。局域网内,那么vm上的那个就需要配置,ping不通,VM里面有三个网络连接模式:host-only、bridge、nat(可以参考http://linuxme.blog.51cto.com/1850814/389691),采用bridge方式。

                                  这里,我的三台机器ip为:

                                          dbrg1  192.168.0.102

                                          dbrg2  192.168.0.112

                                          dbrg3  192.168.0.113

                                 5.下载好hadoop,本人的是0.20.2最新版本

                                 6.修改/etc/hosts。

                                    在dbrg1中添加:

                                              192.168.0.102 dbrg1  dbrg1

                                              192.168.0.112  dbrg2  dbrg2

                                              192.168.0.113  dbrg3  dbrg3

                                   在dbrg2中添加:

                                              192.168.0.102 dbrg1 dbrg1

                                               192.168.0.112 dbrg2 dbrg2

                                  在dbrg3中添加:

                                              192.168.0.102 dbrg1 dbrg1

                                               192.168.0.113 dbrg3 dbrg3

      正式配置:

              1.目录结构

                         由于Hadoop中要求所有机器hadoop的部署目录结构都要相同,并且都要有同名账号,之前的准备工作做好了,这里就ok了。

                         然后在三个节点上创建相同目录结构:/home/dbrg/HadoopInstall

                         将下载好的hadoop压缩包解压到HadoopInstall中,为了以后方便升级,建立一个链接指向要使用的hadoop版本,可以设:

                        $ln -s hadoop-0.20.2.tar hadoop

                        这样就可以通过hadoop访问了,而且还能便于后期的升级与修改

              2.免密码SSH设置

                      (1) 在三台机器上安装ssh,启动ssh-server。

                                 sudo apt-get install openssh-server

                                  sudo /etc/init.d/ssh start  

                                   ps -e|grep ssh       //这个是检验命令

                      (2)在dbrg1上生成密钥对。

                                  ssh-keygen  -t  -rsa //然后一直enter,按照默认的选项生成的密钥对保存在.ssh/id_rsa文件中

                                  进入.ssh目录,输入

                                   cp id_rsa.pub authorized_keys

                                   执行 ssh localhost 看看需不需要输入命令

                      (3)远程拷贝

                                  生成好后,需要将该文件传到dbrg2和3上

                                   在dbrg1中的.ssh目录中,输入

                                   scp authorized_keys dbrg2:/home/dbrg/.ssh/

                                   scp authorized_keys dbrg3:/home/dbrg/.ssh/

                                   说明:如果提示在dbrg2和3上没有此目录,记得创建。此处是需要输入密码的。

                      (4)修改权限。在dbrg2和dbrg3上对该文件进行权限修改

                                   打开.ssh,输入

                                  chmod 644 authorized_keys

                       (5)配置修改

                                   在三台服务器上对sshd服务进行配置,都需要修改。在sudo vi /etc/ssh/sshd_config中 

                                   修改:PasswordAuthentictation  no

                                               AuthorizedKeyFile  /home/dbrg/.ssh/authorized_keys

                     (6)检验

                                   在dbrg1上,ssh dbrg2,输入yes,这样以后访问都不需要输入密码了

                                  同样ssh dbrg3,输入yes。

                                  之后再检验下,看看需不需要输入密码

         3.Hadoop环境配置

                     在dbrg1中,打开hadoop目录,ls下,发现了conf文件夹,这个里面全是配置,打开

                    (1)修改hadoop_env.sh,输入:

                            export HADOOP_HOME=/home/dbrg/HadoopInstall/hadoop

                            export JAVA_HOME=/usr/java/jdk1.7.0

                           说明:根据实际的安装路径来,这是我机子上的

                  (2) 修改masters

                            删除localhost,改为dbrg1

                   (3)修改slaves

                           删除,改为dbrg2、dbrg3

                   (4)修改core-sit.html

                        在configuration之间加入:              

                               <property>

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

                              <value>hdfs://dbrg1:9000</value>

                             <description>The name and URI of the default FS.</description>

                             </property>

                   (5)修改mapred-site.html

                              在configuration之间加入:                          

                              <property>

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

                               <value>dbrg1:9001</value>

                               <description>Map Reduce jobtracker</description>

                              </property>

                    (6)修改hdfs-site.html

                             在configuration之间加入:                         

                                <property>

                               <name>dfs.replication</name>

                               <value>2</value>

                               <description>Default block replication</description>

                              </property>

                     (7)环境配置的拷贝

                                 利用scp命令将上面修改的文件,替代dbrg2和dbrg3中的相应文件

       4.HDFS的运行

                      在dbrg1中初始化namenode,在hadoop目录下,输入

                             bin/hadoop namenode -format

                     然后再三台机器上都要bin/start-all.sh下,启动了

                    在dbrg1上可以查看,输入jps;或者可以通过http://dbrg1:50070查看,页面如下

                     

                       一些命令:bin/hadoop fs -mkdir [文件夹名称] //建立文件夹

                                           bin/hadoop fs -ls //查看当前的HDFS根目录

                                           bin/hadoop fs -rmr [文件或文件名] //删除根目录下的文件或文件夹

                                           bin/hadoop dfs -put [文件名1] [文件名2]//将dbrg1中hadoop目录下的文件名1拷贝到HDFS中,且文件名为文件名2

5.Mapreduce的示例运行

                         首先可以拷贝一下文本文件到文件夹input,然后放到hadoop下,在终端中进入hadoop目录,输入:

                                         bin/hadoop dfs -put input in //这样把input上传到了hadoop中,且名字为in

                         启动下bin/start-mapred.sh,之前应该都启动了

                         执行例子,输入:

                                         bin/hadoop jar hadoop-0.20.0-examples.jar wordcount in out//输入为in,输出在out中,这两文件都在HDFS中

                         查看结果:bin/hadoop dfs -cat out/*

                        另外还可以将HDFS中的文件复制到本地文件系统中:bin/hadoop dfs -get [文件名1] [文件名2]//把HDFS中的1拷贝到本地的hadoop,名字为2

                         说明:还可以通过http://dbrg1:50030查看,由于我的in中文件过多,还在执行,好了,只好吃饭去,等它执行了。。。。

                          

参考:

      http://www.cnblogs.com/wayne1017/archive/2007/03/20/678724.html

      http://cloud.csdn.net/a/20100810/278028.html

      http://www.cnblogs.com/88999660/articles/1581524.html

      http://exceljava.iteye.com/blog/367193

     感谢这些博主的奉献精神,小弟终于配好了,但是路漫漫长,配置好才是开始之路~~

                                        
原创粉丝点击