Hadoop学习笔记(一)—hadoop2.5.2+zookeeper3.6.4+centosx64+vmware11环境搭建

前言                                                                                                                                              

     大数据实在是太热,一直对新技术充满着向往,其实hadoop也不是新技术,已经好几年了。打算学习,一下hadoop整个生态圈的内容。这篇文章介绍一下环境搭建,自己搭环境摸索了好几天连着,终于搭建完成,记录一下。并share一下,如果哪天你也需要,大家一起共勉。在这希望我能认认真真写完每一篇博客,坚持一直写。

                                                                                                                                           ——chaosju

环境+工具准备                                                                                                                                 

       大数据实在是太热,一直对新技术充满着向往,其实hadoop也不是新技术,已经好几年了。打算学习,一下hadoop整个生态圈的内容。这篇文章介绍一 下环境搭建,自己搭环境摸索了好几天连着,终于搭建完成,记录一下。并share一下,如果哪天你也需要,大家一起共勉。在这希望我能认认真真写完每一篇 博客,坚持一直写。

   1.vmare虚拟机

   2.xshell or secureCRT

   3.JDK1.6 或者 1.7 -------不建议1.8

   4.centos的iso

   5.安装ssh

   6.hadoop2.5.2    

          download:http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.5.2/hadoop-2.5.2.tar.gz

          download:http://hadoop.apache.org/releases.html#19+November%2C+2014%3A+Release+2.5.2+available

   7.zookeeper-3.4.6.tar

          download:http://www.apache.org/dyn/closer.cgi/zookeeper/

      注意:apache提供的hadoop-2.5.2的安装包是在32位操作系统编译的,因为hadoop依赖一些C++的本地库,所以如果在64位的操作上安装hadoop-2.5.2就需要重新在64操作系统上重新编译(建议第一次安装用32位的系统)。

     编译教程:http://blog.csdn.net/ggz631047367/article/details/42460589

     64位hadoop2.5.2下载地址:http://pan.baidu.com/s/1kTnIeLT

hadoop搭建环境准备步骤                                                                                                                            像虚拟机安装,xshell的安装使用,就不在这说了。直说一点,我搭建完全分布式,用到4台虚拟机,不要一台一台安装,用vwware的克隆功能,例如你的jdk已经搭建完成,就可以克隆了。

    现在4台虚拟机已经安装好了假设。搭建环境真正的开始。

   0.如果你其中3台虚拟机用的VMware克隆,需要保证ip能够自动获取,做以下修改。其中克隆的主机需要修改

克隆之后的操作系统需要重新分配MAC地址
    a、vi /etc/sysconfig/network-scripts/ifcfg-eth0   (网卡信息)
    将该文件中删除两行:UUID和物理地址
    b、删除rm -rf /etc/udev/rules.d/70-persistent-net.rules 文件
    c、重启  init 6 或reboot

 

 

  修改上述操作完成,执行ifconfig能够看到etho的ip,和新的mac地址

ifconfig

 

 

  1.修改Linux主机名 ,4台主机全部修改
     

vim /etc/sysconfig/network

 

    修改每台主机的hostname,我的命名是node1、node2、 node3、node4

   
   2.修改IP(可选)改成固定ip,4台主机全部修改
     

    vi /etc/sysconfig/network-scripts/ifcfg-eth0
    #修改
    BOOTPROTO=static
    IPADDR=192.168.239.6   #(该IP即为设置的固态IP)
    NETMASK=255.255.255.0
    GATEWAY=192.168.239.2

   3.修改主机名和IP的映射关系,4台主机全部修改
      vim /etc/hosts

    
    验证:分别在每台主机上ping 别的主机的hostname,不是ip验证配置正确

    4.关闭防火墙
     

关闭防火墙,重启还是自动重启
service iptables stop
永久关闭,建议永久关闭 chkconfig iptables off 查看防火墙关闭状态
service iptables status


   5.ssh免登陆
    

 配置node1到node1-4的ssh免登陆
node1上执行
 ssh-keygen -t rsa     
 scp ~/.ssh/id_rsa.pub node1:~/.ssh/  
 scp ~/.ssh/id_rsa.pub node2:~/.ssh/    
 scp ~/.ssh/id_rsa.pub node3:~/.ssh/    
 scp ~/.ssh/id_rsa.pub node4:~/.ssh/
node1-node4都要执行       
 cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys    

配置node2到node1的免登陆
ssh-copy-id -i node1

   验证:ssh node*,第一次需要输入密码。之后就不需要了

   6.安装JDK,配置环境变量等                                                                                      

     这个我就不说了,自己百度吧

 集群规划                                                                                

 

   说明:你对hadoop的架构有一定的了解,不了解也没事,先搭起来再看

        1. namenode(NN) node1、node2

        2. datanode(DN) node1、node2

        3. zookeeper(ZK)node1、node2、node3

        3. DFSZKFailoverController(ZKFC)node1、node2

        3. JournalNode(JN)node2、node3、node4

        3. ResourceManager(RM)node1

        3. DataManager(DM)node2、node3、node4

 安装部署zookeeper和hadoop                                                                                        一、安装配置zookeeper集群                             
        1、node1上解压

 tar -zxvf zookeeper-3.4.6.tar.gz
 ln -sf /root/zookeeper-3.4.6  /home/zk

        2、node1上修改配置

  node1上进行:
    cd /home/zk/conf/
    cp zoo_sample.cfg zoo.cfg
    vim zoo.cfg
   修改:dataDir=/opt/zookeeper
   在最后添加:
    server.1=node1:2888:3888
    server.2=node2:2888:3888
    server.3=node3:2888:3888
   然后创建一个tmp文件夹
    mkdir /opt/zookeeper
   再创建一个空文件
    touch /opt/zookeeper/myid
   最后向该文件写入ID
    echo 1 > /opt/zookeeper/myid

        3、将配置好的zookeeper拷贝到node2、node3)  

  将node1上zookeper的安装文件copy到node2和node3
      scp -r /home/zk/ node2:/root
      scp -r /home/zk/ node3:/root
      node2:
          ln -sf /root/zk  /home/zk
      node3:
          ln -sf /root/zk  /home/zk
   将node1上zookeper的配置文件copy到node2和node3
        scp -r /opt/zookeeper/ node2:/opt
        scp -r /opt/zookeeper/ node3:/opt
   注意:修改node2、node2对应/opt/zookeeper/myid内容
       node2:
            echo 2 > /opt/zookeeper/myid
       node3:
            echo 3> /opt/zookeeper/myid

二、安装配置hadoop集群

    1、node1解压

tar -zxvf hadoop-2.5.2.tar.gz 
ln -sf /root/hadoop-2.5.2 /home/hadoop2.5

      2、将hadoop添加到环境变量中

 

      vim /etc/profile
修改: export JAVA_HOME
=/usr/java/jdk1.6.0_45 export HADOOP_HOME=/home/hadoop2.5 export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin

      3、修改配置文件,hadoop的配置文件在cd /home/hadoop2.5/etc/hadoop,需要修改的配置文件如下图

 

配置文件参考http://hadoop.apache.org/docs/r2.5.2/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html

       1)core-site.xml

<configuration>
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://mycluster</value>
</property>

 <property>
   <name>ha.zookeeper.quorum</name>
   <value>node1:2181,node2:2181,node3:2181</value>
 </property>
  <property>
   <name>hadoop.tmp.dir</name>
   <value>/opt/hadoop2</value>
 </property>
</configuration>

       2)hdfs-site.xml

<configuration>
<property>
  <name>dfs.nameservices</name>
  <value>mycluster</value>
</property>

<property>
  <name>dfs.ha.namenodes.mycluster</name>
  <value>nn1,nn2</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn1</name>
  <value>node1:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn2</name>
  <value>node2:8020</value>
</property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn1</name>
  <value>node1:50070</value>
</property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn2</name>
  <value>node2:50070</value>
</property>
<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://node2:8485;node3:8485;node4:8485/mycluster</value>
</property>
<property>
  <name>dfs.client.failover.proxy.provider.mycluster</name>
  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>
<property>
  <name>dfs.ha.fencing.methods</name>
  <value>sshfence</value>
</property>

<property>
  <name>dfs.ha.fencing.ssh.private-key-files</name>
  <value>/root/.ssh/id_rsa</value>
</property>
<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/opt/journalnode/data</value>
</property>
<property>
   <name>dfs.ha.automatic-failover.enabled</name>
   <value>true</value>
</property>
</configuration>

       3)mapred-site.xml

<configuration>
    <!-- 指定mr框架为yarn方式 -->
<property>
    <name>mapreduce.framework.name</name>
    <value>yarn</value>
</property>
</configuration>

     4) yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->
<!-- 指定resourcemanager地址 -->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>node1</value>
</property>
<!-- 指定nodemanager启动时加载server的方式为shuffle server -->
<property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
</property>
</configuration>

      5)slaves

node2
node3
node4

      6)修改hadoop-env.sh

export JAVA_HOME=/usr/java/jdk1.6.0_45

 3、将修改好的hadoop拷贝到其他节点

 

scp -r /home/hadoop2.5/ node2:/root
scp -r /home/hadoop2.5/ node3:/root
scp -r /home/hadoop2.5/ node4:/root
在node2-4执行link
ln -sf /root/hadoop2.5  /home/hadoop2.5

 

 启动zookeeper和hadoop                                      

1.启动zookeper

 

在node1、node2、node3上启动zk
cd /home/zk/bin/            
./zkServer.sh start          
  查看状态:          
 ./zkServer.sh status          
 (一个leader,两个follower)

 

验证

 

2.启动hadoop,jps查看进程

    1)启动journalnode(在node2上启动所有journalnode)  //ha环境下,格式化hdfs前需要启动journal node
           

cd /home/hadoop2.5      
sbin/hadoop-daemons.sh start journalnode

            (运行jps命令检验,多了JournalNode进程)
        
        2)格式化HDFS在node1上执行命令:

  cd /home/hadoop2.5            
  bin/hdfs namenode -format          
  格式化后会在根据core-site.xml中的hadoop.tmp.dir配置生成个文件,这里我配置的是/opt/hadoop2,然后将/opt/hadoop2/拷贝到node2的/opt/下。          
  scp -r /opt/hadoop2/ node2:/opt

       
        3)格式化ZK(在node1上执行即可)

   cd /home/hadoop2.5         
   bin/hdfs zkfc -formatZK

      
        4)启动HDFS(在node1上执行)

            cd /home/hadoop2.5
            sbin/start-dfs.sh

    jps查看:

   5)启动YARN(在node1上执行)
           cd /home/hadoop2.5

           sbin/start-yarn.sh

 到此,hadoop2.5.2配置完毕,可以统计浏览器访问:
    http://192.168.2.128:50070
    NameNode 'node1:8020' (active)
    http://192.168.2.129:50070
    NameNode'node2:8020' (standby)                                       

 成功图片;

 

posted @ 2015-08-13 12:23  败八  阅读(902)  评论(0编辑  收藏  举报