集群上部署hadoop

本文主要介绍在集群上部署hadoop,构建HDFS

1、相关准备
          下载hadoop: http://hadoop.apache.org/core/releases.html(以hadoop-0.20.2 为例)
          下载JDK1.6(jdk-6u18-linux-x64-rpm.bin


2、硬件环境准备
        四台机器(系统都为64位的Centos 5),通过hostname进行设置:
         master(192.168.21.67),slave1(192.168.21.68)
slave2(192.168.21.69),slave3(192.168.21.70)   
        
        对于Hadoop来说,在HDFS看来,节点分为Namenode 和Datanode,   其中Namenode只有一个,Datanode可以是很多;在 MapReduce看来,节点又分为Jobtracker和 Tasktracker,其中Jobtracker只有一个,Tasktracker可以是很多。所以通常有两台master,一台作为NameNode,一台作为JobTracker,剩下的都为slaves,同时当做DataNode和 TaskTracker使用。当然也可以将NameNode和JobTracker都放在一台master上面。这里让
master做为master和Jobtracker,slave1slave2和slave3作为DataNode和TaskTracker。

3、安装和配置JDK
        (1)分别在四台机器上运行二进制文件:./jdk-6u18-linux-x64-rpm.bin 或 (2)./jdk-6u18-linux-x64.bin。
         (区别在于./jdk-6u18-linux-x64-rpm.bin会自动安装在/usr/java下,而./jdk-6u18-linux-x64.bin生成的jdk1.6.0_18文件夹需要手动放到/usr/java或者其它自定义目录下。
)

        (2)编辑四台机器的/etc/profile,增加如下内容
export JAVA_HOME=/usr/java/jdk1.6.0_18
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/lib:$JAVA_HOME/jre/bin:$PATH:$HOME/bin
        
4、安装Hadoop
          (1)以root登录,在master机器上编辑/etc/hosts(在slave1、slave2和slave3上操作和以下相同)
                  192.168.21.67  master
                  192.168.21.68  slave1
                  192.168.21.69  slave2
                  192.168.21.70  slave3

          (2)在四台机器上分别用root登陆,建立hadoop用户,密码都为hadoop
                  useradd hadoop
                  passwd hadoop

           (3)
配置SSH环境,实现无密码远程访问(都以hadoop帐号登录)
            在Hadoop启动以后,Namenode是通过SSH(Secure Shell)来启动和停止各个datanode上的各种守护进程的,这就需要在节点之间执行指令的时候是不需要输入密码的方式,故我们需要配置SSH使用无密码公钥认证的方式。

              //在master机器上,生成SSH秘钥对命令,使用命令

              ssh-keygen -t rsa //这个命令将为hadoop上的用户hadoop生成其密钥对,询问其保存路径时直接回车采用默认路径,当提示要为生成的密钥输入passphrase的时 候,直接回车,也就是将其设定为空密码。生成的密钥对id_rsa,id_rsa.pub,默认存储在/home/hadoop/.ssh目录下

              //进入.ssh目录生成authorized_keys文件

               cp id_rsa.pub authorized_keys

              //建立本身信任连接命令

               ssh master

              //分别在slave1、slave2、slave3机器上,使用命令 

               ssh-keygen -t rsa //生成.ssh文件夹

              //然后拷贝master上的.ssh文件夹覆盖本地的

              scp master:/home/hadoop/.ssh/* /home/hadoop/.ssh

             //此后就可建立无密码并且没有任何提示信息即可登录ssh主机名


        (4)Hadoop的安装(都以用户hadoop登录)

                将下载好的hadoop-0.20.2.tar.gz文件上传到四台机器上的/home/hadoop

                 //解压文件                      

                 tar zxvf hadoop-0.20.2.tar.gz  

                  //如出现问题可以用下面两句代替

                     gzip -d hadoop-0.20.2.tar.gz

                 tar xvf hadoop-0.20.2.tar

              (5)配置/etc/profile
                 // 
以root登录四台机器,编辑/etc/profile,增加如下内容
                  export HADOOP_HOME=/home/hadoop/hadoop-0.20.2
                  export PATH=$PATH:$HADOOP_HOME/bin


              (6)修改Hadoop的配置文件(以Hadoop登录)
修改4个文件core-site.xml (0.19.0版本是hadoop-site.xml),hadoop-env.sh,masters,slaves
                   //masters文件修改成
                      master
                     
                 //slaves
文件修改成
                     slave1

                     slave2

                 //hadoop-env.sh文件修改成
                  export JAVA_HOME=/usr/java/jdk1.6.0_18


                    //master机器上的core-site.xml文件修改成
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>

<property>
   <name>fs.default.name</name>
   <value>hdfs://master:54310/</value>
</property>

<property>
   <name>mapred.job.tracker</name>//
   <value>hdfs://master:54311/</value>
</property>

<property>
   <name>dfs.replication</name>
   <value>3</value>     #指定 HDFS 中每个 Block 被复制的次数,起数据冗余备份的作用。在典型的生产系统中,这个数常常设置为3
</property>

<property>
    <name>hadoop.tmp.dir</name>
    <value>/home/hadoop/tmp/</value>  #hadoop的tmp目录路径
</property>

<property>
  <name>dfs.name.dir</name>
  <value>/home/hadoop/name/</value>  #hadoop的name目录路径
 </property>

<property>
   <name>mapred.child.java.opts</name>
   <value>-Xmx512m</value>          #进程
</property>

<property>
  <name>dfs.block.size</name>
  <value>67108864</value>
  <description>The default block size for new files.</description>
</property>                              #新文件默认block大小

<property>  
        <name>dfs.permissions</name>  
        <value>false</value>              #效验HDFS文件系统权限
</property>  
 
<property>  
        <name>dfs.web.ugi</name>  
        <value>hadoop,supergroup</value>    #hadoop页面访问权限
</property>

<property>
        <name>heartbeat.recheck.interval</name>
        <value>5000</value>     #心跳间隔时间,5000秒=40分
</property>
</configuration>           

在slave1、slave2和slave3上的
core-site.xml文件只需要做如下修改

去掉
<property>
  <name>dfs.name.dir</name>
  <value>/home/hadoop/name/</value>  #hadoop的name目录路径
</property>
增加一句
<property>
  <name>dfs.data.dir</name>
  <value>/home/hadoop/data/</value>  #hadoop的data目录路径
 </property>
 


               (7)
配置好后先在/home/hadoop下建立/tmp目录
                      然后在master机器上进入hadoop的bin目录
                    //格式化namenode
                    hadoop namenode -format  
                    //启动namenode上的hadoop
                     ./start-all.sh 
                  //查看50070,54310,50090端口是否启动
                     netstat -tnl
                  http://master:50070访问

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值