`
liujun58love
  • 浏览: 14920 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

hadoop集群配置

    博客分类:
  • java
阅读更多
最近一整子, Apache软件基金组织下的hadoop在行业越来越流行,这个东西可以分布式处

理大批量的数据,最近有点时间,想要学习学习这个东西,就自己在电脑上装了一台虚拟机,

安装了linux操作系统,结合网上前辈们的资料,自己实践了一下,由于是第一次学习,所以

看似简单的问题,确花费了一些时间,走了不少弯路,不过欣慰的是,终于将一个简单的

hadoop配置完成。趁热打铁,为了不至于以后忘记,特此将这些配置先记录下来,以便下次

查看。

操作环境:由于本人没有太多的机子供其测试使用,顾在自己的电脑上安装了虚拟机,同时在

虚拟机中安装了linux操作系统,克隆了三台。

操作系统版本:redhat5.4

操作步骤:

说明:我复制了三台机子,安排如下
  机器名                    ip                        作用
liujun-c-1           192.168.12.247   NameNode、master、jobTracker   liujun-c-2          192.168.12.238  datenode、slave、taskTracker
liujun-c-3          192.168.12.223  datenode、slave、taskTracker

注:机器名称最好不好使用"_",可以使用"-",我开始也是使用"_"来命名名称节点的,但是

后面发现有问题,老是通不过,后来在网上看到有朋友这麽说,我就按照他说的方式改整了一

下,后续就没有问题了;具体原因,由于是初步接触hadoop,所以无法解释清楚。

修改机器名称方法: vi /etc/sysconfig/network 

里边有一个 HOSTNAME = "你要起的机器名称",修改保存完成后,最好重启一下网络配置
service network restart

1.安装jdk

  下载jdk安装包而且版本必须是jdk1.6以上版本,我这里选用的是
   jdk-6u19-linux-i586-rpm.bin(jdk1.6.0_19)
   通过ftp传到指定文件夹,操作如下
  
   (1).先给上传的文件授权可操作,否则无法操作当前文件

      chmod u+x jdk-6u19-linux-i586-rpm.bin

   (2).通过 ./jdk-6u19-linux-i586-rpm.bin 执行文件

   (3).通过  rpm -ivh jdk-6u19-linux-i586-rpm 执行这个文件

   (4).一路回车,基本jdk就完成了安装

   (5).配置jdk环境,vi /etc/profile,在文件最后边加上

      JAVA_HOME=/usr/java/jdk1.6.0_19
     CLASSPATH=.:$JAVA_HOME/lib.tools.jar
     PATH=$JAVA_HOME/bin:$PATH
     export JAVA_HOME CLASSPATH PATH

    保存完成后,使用logout登出,重新输入用户名和密码,进入系统后

     使用指令 java -version 查看你的jdk版本是否和你安装的一致,如果显示

     java version "1.6.0_19"

    Java(TM) SE Runtime Environment (build 1.6.0_19-b04)

    Java HotSpot(TM) Server VM (build 16.2-b04, mixed mode)

     则说明安装成功。

     说明:jdk需要在你集群的每台机子上面安装

2.开启ssh服务
 
    (1)在NameNode 上实现无密码登录本机:
      ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa   
    
     直接回车,完成后会在~/.ssh/生成两个文件:id_dsa 和id_dsa.pub。这两个是成
   
     对出现,类似钥匙和锁。再把id_dsa.pub 追加到授权key 里面(当前并没有
     authorized_keys
    文件):
    cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys。完成后可以实现无密码
   
    使用本机测试一下
    ssh localhost
 
  (2)实现NameNode 无密码登录其他DataNode
    
     拷贝NameNode 的id_dsa.pub 文件:
    
      scp id_dsa.pub root@192.168.12.238:/tmp
    
     登录192.168.12.238,在/tmp目录下面能够看到从namenode(192.168.12.247)
    
     复制的id_dsa.pub文件,然后执行
 
      cat id_dsa.pub >> .ssh/authorized_keys
  
     其他的dataNode 执行同样的操作。

    注意:如果配置完毕,如果namenode 依然不能访问datanode,可以修改datanode

     authorized_keys,将其权限修改 为 $ chmod 600 authorized_keys。
   

   (3).配置完测试

      通过namenode(192.168.12.247)  ssh连接两个
     
      datanode(192.168.12.238,192.168.12.223)

     使用指令如下:ssh root@192.168.12.238(223),如果能够无需密码登录则说明配

     置成功完成,否则请检查以上的配置那里出了问题。

   (4)在/etc/hosts 中添加机器名和相应的IP
      vi /etc/hosts

      添加内容如下:
     
       127.0.0.1 localhost

      192.168.12.247  liujun-c-1
      192.168.12.238  liujun-c-2
      192.168.12.223  liujun-c-3
 
     注:ip后面跟的liujun-c-* 为机器名称,前面提到的  在/etc/sysconfig/network
        中修改的HOSTNAME
  

4.安装hadoop

   (1).从hadoop官网下载(http://hadoop.apache.org)hadoop安装包,这里我使用的是hadoop-0.20.2.tar.gz

   (2).上传至服务器,进行解压安装
       
         tar -zxvf hadoop-0.20.2.tar.gz

    (3).解压完成后配置hadoop环境
         把Hadoop 的安装路径添加到环/etc/profile 中:
        export HADOOP_HOME=/software/hadoop-0.20.2
        
        export PATH=$HADOOP_HOME/bin:$PATH

        说明:/software/是我放置hadoop解压文件的目录   

    (4).配置hadoop环境变量
       
       hadoop 的主要配置都在hadoop-0.20.2/conf 下。
        在conf/hadoop-env.sh 中配置Java 环境
         vi hadoop-env.sh
       文件末尾添加
       export JAVA_HOME=/usr/java/jdk1.6.0_19
       完成保存

        配置conf/masters 和conf/slaves 文件
          vi masters 里边写入
           192.168.12.247
         vi slaves 里边写入
          192.168.0.3
          192.168.0.5
   (5)修改hadoop配置文件

       配置conf/core-site.xml, conf/hdfs-site.xml 及conf/mapred-site.xml        

      vi core_site.xml 向里边写入

<configuration>
   <property>
      <name>hadoop.tmp.dir</name>
       <value>/home/liujun/tmp</value>
   </property>

<property>
   <name>fs.default.name</name>
   <value>hdfs://192.168.12.247:9000</value>
</property>
</configuration>

保存 :wq完成

   vi hdfs-site.xml 里边写入

   说明:( replication 默认为3,如果不修改,datanode 少于三台就会报错)
<configuration>
<property>
    <name>dfs.replication</name>
    <value>2</value>
  </property>
</configuration>

保存:wq 完成

  vi mapred-site.xml 里边写入

<configuration>
  <property>
     <name>mapred.job.tracker</name>
     <value>192.168.12.247:9001</value>
</property>
</configuration>

保存 :wq完成

注:上面关于hadoop配置文件和jdk配置都需要在三台机子上进行相同的配置,缺一不可   

(6).使用hadoop
 
   重要说明:在运行hadoop之前,一定要关闭服务器上面的防火墙,否则测试肯定会失败

     service iptables stop

     (1).首先登陆到namenode服务器(我这里是:192.168.12.247)
   
     使用hadoop格式化文件系统

      hadoop namenode -format

     (2).启动hadoop系统服务

       进入hadoop加压目录中的conf
       
        cd /software/hadoop-0.20.2/bin

        ./start-all.sh (启动hadoop整个系统服务,关闭是:./stop-all.sh)
                               
     (3).查看服务启动状态
  
        使用jps在namenode(192.168.12.247)上应该能够看到这样的内容
        root@liujun-1-c# jps
       5946 secondaryNameNode
       6120 Jps
       6026 JobTracker
       5838 NameNode

       登陆datanode节点(192.168.12.238和192.168.12.223)

       root@liujun-2-c# jps
       4387 DataNode
       4464 TaskTrack
       6773 JPS

       查看集群状态:$ hadoop dfsadmin -report   
       
        Hadoop 的web 方式查看:http://192.168.12.247:50070

    (6).运行实例

       运行wordcount.java 程序
         (1)先在tmp目录下建立两个输入文件file01 和file02
           cd /tmp
           $ echo “Hello World Bye World” > file01
           $ echo “Hello Hadoop Goodbye Hadoop” > file02
       
       (2)在hdfs 中建立一个input 目录:$ hadoop fs –mkdir input

       (3)将file01 和file02 拷贝到hdfs 中:
             cd /tmp
           hadoop fs -put file01 input
           hadoop fs -put file02 input
          
        (4)执行wordcount:

            进入hadoop安装目录

           cd /software/hadoop-0.20.2
         
          执行

       $ hadoop jar hadoop-0.20.1-examples.jar wordcount input output

       (5)完成之后,查看结果:

             $ hadoop fs -cat output/part-r-00000 

          输出结果
          
           Goodbye 1
         Hadoop 2
         Hello 2
         World 2
             
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics