让hadoop2.4.1跑起来---搭建完全hadoop集群环境

路漫漫其修远兮 -,吾将上下而求索------------   天道真的会酬勤?

1》 》》准备4台机子, 都装上linux的系统,我推荐安装的是 cenos,看硬件吧,有条件的话装centos7,因为这个是64位的,我在实验室所以差一点,装的是centos6.5

2》 》》》装完机子后,用户名统一一下,我用的是root,但在实际环境中,需要自己创建用户,然后在/root下建立hjava文件夹,这样,我的jdk jre hadoop全是放在这里面的

3》 Java的配置,hadoopjava的,在装完centos6.5后,用java –version查看一下,就会发现是openjdk,不想用这个,想用自己的jdk,所以去下载jdkjre,我下载的是jdk7 和 jre7 版本的,所以先解压, tar  -xvzf  jdk-XXX.tar.gz  ,   tar –xzvf  jre-XXX.tar.gz 运行完着两条命令后,接着变一下文件夹的名字吧,jdk-XXX总觉着太长,用 mv jdk-XXX jdk7  , mv  jre-XXX  jre7 来改变文件夹的名字。改完后就要删除系统中的openjdk了。用  rpm –qa |grep java 查出openjdkjava rpm包,然后用 rpm –e –nodeps @@ 逐渐一一删除,其中@@ 就是刚才pm –qa |grep java 这条命令查出的结果,一般有两条或3条,都删了就可以了,然后 运行 java  -version会发现是空白,这样openjdk就删除干净了。接下来配置自己账户下的jdk。在自己的家目录下,我这里是/root目录,或者直接敲入命令 cd ~ 即可进入自己的家目录,然后 运行 vi  .bashrc ,在文件底部加入 export JAVA_HOME=/root/hjava/jdk7

export JRE_HOME=/root/hjava/jdk7

export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib 

export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin   即可,这样 配置后保存,然后敲入source .bashrc使之立即生效。完成后,在命令行敲入java –version来查看自己设置的jdk环境。

4》 配置好java环境后,开始为hadoop做准备了,即联网的准备哦。怎么联网呢? 首先说明,我有四台机子,一台master,叫做xiaoxiong1

三台slave,叫做xiaoxiong2 xiaoxiong3 xiaoxiong4。这样,想给他们分配的ipv4是 192.168.8.1  192.168.8.2  192.168.8.3  192.168.8.44ip地址,在vi  /etc/sysconfig/network-scripts/ifcfg-eth0 ,在打开的文件中,注意,DEVICE  TYPE  UUID  HWADDR是不用变的,而且千万别变,然后在这基础上加入或者修改 ONBOOT=yes   BOOTPROTO=static  IPADDR=你想写的IP地址,也就是刚才的ip地址, NETMASK=255.255.255.0弄完这些后保存退出,然后敲入命令 /etc/init.d/network reload使这些改变生效,然后你在运行 ifconfig 查看一下,看变成自己想要的ip没。做完这些后,在 敲入 vi /etc/hosts , 在文件尾部加入

192.168.8.1  xiaoxiong1

192.168.8.2  xiaoxiong2

192.168.8.3   xiaoxiong3

192.168.8.4  xiaoxiong4

这些是为了在你ssh的时候机器之间能互相认识,这些操作是要在你所有的机子上运行一遍的  切记 , 做完这些后,可以ping一下主机名,看通了吧,然后 

关闭你的master也就是xiaoxiong1上的防火墙, 用命令 chkconfig iptables off,不然从节点上的 nodemanager无法启动

5》 网络弄好后,接下来是ssh的配置,我们使用ssh登录。随便选一台机子,比如我选的是xiaoxiong1,然后敲入 ssh-keygen –t dsa ,然后一路按回车,完后,在你的家目录下的 .ssh 文件夹下,会有生成idXX  和 idXX.pub文件,这个便是传说中的秘钥和公钥。然后运行 ssh-copy-id  -i  idXX.pub  root@主机名,注意是在 .ssh 目录下的,这里的主机名是所有的主机名xiaoxiong1 2 3 4 都要运行一遍刚才的命令,这样,刚才选的xiaoxiong1才可以跟 xiaoxiong1 2 3 4进行ssh免密码登录,在这个过程中,会写 yes 和你要登录主机的密码,写上去回车即可。这样,xiaoxiong1 4台机子ssh做好的,接着是xiaoxiong2 和其他机子的,以此类推,做完所有机子的ssh,这样,所有机子便可以免密码ssh互通了

6》 做ssh后,便是配置hadoop2.4.1的配置文件了,首先在下hadoop2.4.1,用tar命令解压,解压完后,我的目录用A表示,然后开始进行配置。首先是

A/etc/hadoop/salves的配置,就是说这个文件中写入你的salves节点名字即可,我的是 xiaoxiong2  xiaoxiong3  xiaoxiong4 。然后是 hadoop-env.sh文件,  

在尾部加入  JAVA_HOME=$JAVA_HOME, 然后是

 

· /hadoop-2.4.1/etc/hadoop/core-site.xml


   
   
        
    
    
        
     
     
      
      fs.defaultFS
     
     
        
     
     
      
      hdfs://xiaoxiong1:9000
     
     
        
    
    
 
        
    
    
        
     
     
      
      io.file.buffer.size
     
     
        
     
     
      
      131072
     
     
        
    
    
 
        
    
    
        
     
     
      
      hadoop.tmp.dir
     
     
        
     
     
      
      file:/home/xiaoxiong1/hjava/hadoop-2.4.1/tmp
     
     
        
     
     
      
      Abase for other temporary directories.
     
     
        
    
    
 
        
    
    
        
     
     
      
      hadoop.proxyuser.hduser.hosts
     
     
        
     
     
      
      *
     
     
        
    
    
 
        
    
    

     
     
      
      hadoop.proxyuser.hduser.groups
     
     
        
     
     
      
      *
     
     
        
    
    
 
 

   
   

 

· hdfs-site.xml


   
   
 
        
    
    
        
     
     
      
      dfs.namenode.secondary.http-address
     
     
        
     
     
      
      xiaoxiong1:9001
     
     
        
    
    
        
    
    
        
     
     
      
      dfs.namenode.name.dir
     
     
        
     
     
      
      file:/home/xiaoxiong1/hjava/hadoop-2.4.1/name
     
     
        
    
    
        
    
    
        
     
     
      
      dfs.datanode.data.dir
     
     
        
     
     
      
      file:/home/xiaoxiong1/hjava/hadoop-2.4.1/data
     
     
        
    
    
        
    
    
        
     
     
      
      dfs.replication
     
     
        
     
     
      
      3
     
     
        
    
    
        
    
    
        
     
     
      
      dfs.webhdfs.enabled
     
     
        
     
     
      
      true
     
     
        
    
    
 

   
   

· mapred-site.xml


   
   
        
    
    
        
     
     
      
      mapreduce.framework.name
     
     
        
     
     
      
      yarn
     
     
        
    
    
        
    
    
        
     
     
      
      mapreduce.jobhistory.address
     
     
        
     
     
      
      xiaoxiong1:10020
     
     
        
    
    
        
    
    
        
     
     
      
      mapreduce.jobhistory.webapp.address
     
     
        
     
     
      
      xiaoxiong1.19888
     
     
        
    
    
        
   
   

· yarn-site.xml


   
   


    
    

     
     
      
      yarn.nodemanager.aux-services
     
     

     
     
      
      mapreduce_shuffle
     
     

    
    


    
    

     
     
      
      yarn.nodemanager.aux-services.mapreduce.shuffle.class
     
     

     
     
      
      org.apache.hadoop.mapred.ShuffleHandler
     
     

    
    


    
    

     
     
      
      yarn.resourcemanager.address
     
     

     
     
      
      xiaoxiong1:8032
     
     

    
    


    
    

     
     
      
      yarn.resourcemanager.scheduler.address
     
     

     
     
      
      xiaoxiong1:8030
     
     

    
    


    
    

     
     
      
      yarn.resourcemanager.resource-tracker.address
     
     

     
     
      
      xiaoxiong1:8031
     
     

    
    


    
    

     
     
      
      yarn.resourcemanager.admin.address
     
     

     
     
      
      xiaoxiong1:8033
     
     

    
    


    
    

     
     
      
      yarn.resourcemanager.webapp.address
     
     

     
     
      
      xiaoxiong1:8088
     
     

    
    


   
   

7》 配置完这些文件后,把hadoop这个文件的家目录,就刚才解压hadoop-2.4.1.tar.gzA,复制到其他的节点上去,用scp命令即可,都复制完后,进去masterA目录,进去后执行./bin/hdfs namenode –format , 然后看到INFO common.Storage:

 Storage   directory /home/wukong/a_usr/hadoop-2.4.1/name has been successfully formatted.说明成功啦,格式化节点成功

8》 启动dfs     在A目录下, 执行 ./sbin/start-dfs.sh,看到一系列的.out说明成功了

9》 启动yarn    A下,./sbin/start-yarn.shmaster节点)   然后敲入jps


master节点:

1. 8783 NameNode

2. 8981 SecondaryNameNode

3. 9759 Jps

4. 9132 ResourceManager

 

slave节点:

 

1. 6911 DataNode

2. 7035 NodeManager

3. 7281 Jps

/etc/securetty

说明差不多啦

10》 (可以省略这一步)》用eclipse来开发hadoop程序。 首先要明白,eclipse是telnet来连接hadoop的,所以先看一下你的计算机能不telnet master节点。一般的话先去 控

制面板----》打开或关闭windows功能,将win7 的telnet功能开启,一般win7作为客户端只要开启telnet的客户端组件功能就ok啦,不需要开启服务端的。在linux下,

要开启telnet的服务端,因为telnet是明文发送的,所以centos默认是不安装这个服务的,可以去安装光盘的 packages下找到telnet-server这个rpm文件,然后再找一个

xinetd-2.3.14-39.el6_4.i686.rpm的文件,然后在linux中先安装xinetd,用 rpm –i xinetd-2.3.14-39.el6_4.i686.rpm 安装,然后就是telnet-server的安装。装好

后,去/etc/xinetd.d/telnet 中修改一下, 将 disable=yes 改成 disable=no, 这样, 重启xinted的服务, 即 service xinetd restart 后, 用

Netstat –ntl | grep 23 来查看linux的23号端口开了没,查到了的话就代表开启23的端口了。 一般而言, linux是禁止root通过telnet来登录的,可以去

/etc/securetty 末尾加上 pts/0     pts/1 ,然后保存,这样的话可用 root登录了。然后回到 win7中, ping一下,可以ping通的,但是telnet就是没反应,死活通不

了,后来才想到,是ip的问题。是的,win7下去给 本地连接 设置一个 ip去吧, 是 192.168.8.5,跟你的linux要在同一个网段上的, 掩码 255.255.255.0,其他的不填,

这样的话再去 dos中跑一下telnet命令,就会出现可以登录的情况,至此,断断续续的高了一礼拜才弄完了,但是这时候,我已经将hadoop从集群点上删除了,因为手贱,点错

了,导致hadoop的datanode节点无法启动,需要重装了,诶,晕死了,慢不慢来吧

11》 》  通过上面的,telnet应该能与linux连接了,主要就是将win7的ip放到集群的ip网段中就好了。然后就开始制作eclipse-hadoop的插件了,网上教程很多的。

@首先是 从  github上面下载eclipse-hadoop2.x 的源码,然后在eclipse中通过ant反编译成 jar插件。Github的网址是

https://github.com/winghc/hadoop2x-eclipse-plugin, 这上面右边导航树点击 download zip 就能下载 到hadoop2x-eclipse-plugin 了,下载完后,解压,然后在

eclipse新建一个普通的java project,将刚才下载的eclipse-hadoop2.x 包的 hadoop-eclipse2X-pulin\hadoop2x-eclipse-plugin-master\src\contrib\eclipse-plugin 

中的

META-INF(文件夹)

Resources(文件夹)

src(文件夹)

build.properties

plugin.xml

build.xml   

6个文件往项目里复制,build.xml会出错,粘贴下面的代码改掉build.xml中的前5个属性,这里build。Xml中已经修改过了,

Build.xml代码如下


   
   

   
   
 
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
 
    
    
    
    
    
    
 
    
    
    
    
    
    
 
    
    
    
    
    
    
    
    
    
 
    
    
    
    
    
    
    
    
    
 
    
    
    
 
    
    
    
        
     
     
            
      
      
            
      
      
            
      
      
            
      
      
            
      
      
            
      
      
            
      
      
            
      
      
            
      
      
            
      
      
        
     
     
    
    
    
 
    
    
    
        
     
     
    
    
    
 
    
    
    
        
     
     
        
     
     
        
     
     
        
     
     
        
     
     
            
      
      
                
       
       
                
       
       
                
       
       
            
      
      
            
      
      
                
       
       
                
       
       
                
       
       
            
      
      
            
      
      
                
       
       
                
       
       
                
       
       
            
      
      
            
      
      
                
       
       
                
       
       
                
       
       
            
      
      
            
      
      
                
       
       
                
       
       
                
       
       
                
       
       
                
       
       
                
       
       
                
       
       
                
       
       
                
       
       
                
       
       
                
       
       
                
       
       
                
       
       
                
       
       
                
       
       
            
      
      
        
     
     
    
    
    
 
    
    
    
        
     
     
        
     
     
            
      
      
            
      
      
        
     
     
    
    
    
 
    
    
    
 
        
     
     
            
      
      
            
      
      
        
     
     
 
        
     
     
            
      
      
                
       
       
            
      
      
            
      
      
            
      
      
        
     
     
    
    
    
 
 
    
    
    
        
     
     
        
     
     
    
    
    
 

   
   

具体代码见http://www.cnblogs.com/zxub/p/3884030.html

里面描述的。改完后 在build.xml上右击 ,然后ant运行,生成插件,刷新项目,就可以看见生成的插件了。将 生成的插件放到eclipse 的 puilgn 中,重启eclipse,

这时候若没有看到map/reduce插件,说明eclipse在偷懒,没有进行刷新,这时候删去eeclipse工作区里面的.metadata 文件夹,然后重启eclipse,这样就会看到了。

 

@@然后在 eclipse 的 window ---》 preference 中,找到右面功能树的hadoop map/reduce ,添加hadoop的目录,这里hadoop的目录就是你在linux中集群hadoop家目

录的一个备份,把它弄到这里来,我用的是 psftp(属于putty的一种,putty可以去http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html 下载) 的

 get功能

 

@@@然后去eclipse的视图里面打开 map/reduce 视图,新建一个连接,这里面,Location name可任意填写,Mapreduce Master中Host为resourcemanager机器

ip,Port为resourcemanager接受任务的端口号,即yarn-site.xml文件中yarn.resourcemanager.scheduler.address配置项中端口号。DFS Master中的Host为

namenode机器ip,Port为core-site.xml文件中fs.defaultFS配置项中端口号。配置好后,在eclipse 中还看不到节点的话, 看看你的hdfs系统中有没上传文件,

一般在集群点上传几个文件,在eclipse中就会看到的。这样,eclipse已经远程连接到hadoop了,接下来就是开始第一个 wordCount程序了

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值