• Hadoop-2.7.1集群环境搭建


    摘自:http://blog.csdn.net/u014039577/article/details/49813531

    由于日志数据量越来越大,数据处理的逻辑越来越复杂,同时还涉及到大量日志需要批处理,当前的flume-kafka-storm-Hbase-web这一套流程已经不能满足当前的需求了,所以只能另寻出路,于是想到了Hadoop这个东西。之前的storm是一个基于流式处理的实时分析系统,相比Hadoop的离线批处理各有千秋,两者相比,我有看到一个比较形象的比喻:Hadoop就像是纯净水,一桶一桶地搬,而Storm是用水管,预先接好,打开水龙头,水就源源不断的出来了。

    同样,Hadoop的批处理也是相当的强大,高性能、高稳定、高吞吐量、分布式、批处理这些特点都是我们所需要的。于是,在目前的形势下,在之前的实时处理的基础上,我们想再加一个离线的日志批处理,于是用到了Hadoop。首先,我们得搭建好Hadoop集群,由于我也是第一次搭建Hadoop集群,其中遇到了许多的问题,可以说是一把辛酸泪,后面终于把集群搭建起来了,可算不负众望。

    下面记录Hadoop的搭建过程:

    1、首先到官网上下载一个Hadoop的压缩安装包,我安装用的版本是hadoop-2.7.1.tar.gz,由于我安装的是最新的版本,和Hadoop之前的版本有很大的差异,所以网上很多的教程都不适用,这也是导致在安装过程中遇到问题所在,下载地址:http://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.7.1/hadoop-2.7.1.tar.gz

    2、下载完成后(这个压缩包比较大,有201M,下载比较慢,耐心等待吧),放到Linux某个目录下,这里我用的系统是:CentOS release 6.5 (Final),我放的目录是:/usr/local/jiang/hadoop-2.7.1.tar.gz,然后执行:tar zxvf hadoop-2.7.1.tar.gz解压(这些操作都是要在集群中的主机上进行,也就是hadoop的master上面)

    3、配置host文件

    进入/etc/hosts,配置主机名和ip的映射, 这里是集群的每个机子都需要配置,这里我的logsrv02是主机(master),其余两台是从机(slave)

    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. [root@logsrv03 /]# vi /etc/hosts  
    2. 172.17.6.142 logsrv02  
    3. 172.17.6.149 logsrv04  
    4. 172.17.6.148 logsrv03  
    4、jdk的安装(这里我的机子上面已经有了,所以就不需要再安装了)

    我使用的jdk是jdk1.7.0_71,没有的需要安装,将jdk下载下来,解压到某个目录下,然后到/etc/profile中配置环境变量,在执行Java -version验证是否安装成功。

    5、配置SSH免密码登陆

    这里所说的免密码登录是相对于主机master来说的,master和slave之间需要通信,配置好后,master和slave进行ssh登陆的时候不需要输入密码。

    如果系统中没有ssh的需要安装,然后执行:

    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. [root@logsrv03 ~]# ssh-keygen -t rsa  
    会在根目录下生成私钥id_rsa和公钥id_rsa.pub
    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. [root@logsrv03 /]# cd ~  
    2. [root@logsrv03 ~]# cd .ssh  
    3. [root@logsrv03 .ssh]# ll  
    4. 总用量 20  
    5. -rw-------  1 root root 1185 11月 10 14:41 authorized_keys  
    6. -rw-------  1 root root 1675 11月  15:57 id_rsa  
    7. -rw-r--r--  1 root root  395 11月  15:57 id_rsa.pub  

    然后将这里的公钥分别拷贝到其余slave中的.ssh文件中,然后要把公钥(id_dsa.pub)追加到授权的key中去:

    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. cat id_rsa.pub >> authorized_keys  

    然后修改权限(每台机子都需要修改),这点我也没太弄明白,具体可以参考:http://blog.csdn.net/leexide/article/details/17252369
    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. [root@logsrv04 .ssh]# chmod 600 authorized_keys   
    2. [root@logsrv04 .ssh]# chmod 700 -R .ssh     

    将生成的公钥复制到从机上的.ssh目录下:

    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. [root@logsrv03 .ssh]# scp -r id_rsa.pub root@logsrv02:~/.ssh/  
    2. [root@logsrv03 .ssh]# scp -r id_rsa.pub root@logsrv04:~/.ssh/  

    然后所有机子都需要重启ssh服务

    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. [root@logsrv03 .ssh]# service sshd restart  
    2. [root@logsrv02 .ssh]# service sshd restart  
    3. [root@logsrv04 .ssh]# service sshd restart  
    然后验证免密码登陆是否成功,这里在主机master这里验证:
    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. [root@logsrv03 .ssh]# ssh logsrv02  
    2. [root@logsrv03 .ssh]# ssh logsrv04  

    如果在登陆slave不需要输入密码,则免密码登陆设置成功。

    6、开始安装Hadoop,配置hadoop环境变量/etc/profile(所有机子都需要配置)

    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. export HADOOP_HOME=/usr/local/jiang/hadoop-2.7.1  
    2. export PATH=$PATH:$HADOOP_HOME/bin  
    7、修改配置文件:
    (1)、修改hadoop-2.7.1/etc/hadoop/hadoop-env.sh
    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. [root@logsrv03 /]# cd usr/local/jiang/hadoop-2.7.1  
    2. [root@logsrv03 hadoop-2.7.1]# cd etc/hadoop/  
    3. [root@logsrv03 hadoop]# vi hadoop-env.sh  
    4. export JAVA_HOME=/usr/local/jdk1.7.0_71  
    (2)、修改hadoop-2.7.1/etc/hadoop/slaves
    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. [root@logsrv03 hadoop]# vi slaves   
    2. logsrv02  
    3. logsrv04  
    (3)、修改hadoop-2.7.1/etc/hadoop/core-site.xml
    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. <configuration>  
    2. <property>  
    3.                 <name>fs.defaultFS</name>  
    4.                 <value>hdfs://logsrv03:8020</value>  
    5.         </property>  
    6.         <property>  
    7.                 <name>io.file.buffer.size</name>  
    8.                 <value>131072</value>  
    9.         </property>  
    10.         <property>  
    11.                 <name>hadoop.tmp.dir</name>  
    12.                 <value>file:/opt/hadoop/tmp</value>  
    13.         </property>  
    14.         <property>  
    15.                 <name>fs.hdfs.impl</name>  
    16.                 <value>org.apache.hadoop.hdfs.DistributedFileSystem</value>  
    17.                 <description>The FileSystem for hdfs: uris.</description>  
    18.         </property>  
    19.         <property>  
    20.                 <name>fs.file.impl</name>  
    21.                 <value>org.apache.hadoop.fs.LocalFileSystem</value>  
    22.                 <description>The FileSystem for hdfs: uris.</description>  
    23.     </property>  
    24. </configuration>  
    (4)、修改hadoop-2.7.1/etc/hadoop/hdfs-site.xml
    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. <configuration>  
    2. <property>  
    3.                 <name>dfs.namenode.name.dir</name>  
    4.                 <value>file:/opt/hadoop/dfs/name</value>  
    5.         </property>  
    6.         <property>  
    7.                 <name>dfs.datanode.data.dir</name>  
    8.                 <value>file:/opt/hadoop/dfs/data</value>  
    9.         </property>  
    10.         <property>  
    11.                 <name>dfs.replication</name>      
    12.                 <value>2</value>   
    13.         </property>  
    14. </configuration>  
    (5)、修改hadoop-2.7.1/etc/hadoop/yarn-site.xml
    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. <configuration>  
    2.   
    3. <!-- Site specific YARN configuration properties -->  
    4. <property>  
    5.                 <name>yarn.resourcemanager.address</name>  
    6.                 <value>logsrv03:8032</value>  
    7.         </property>  
    8.         <property>  
    9.                 <name>yarn.resourcemanager.scheduler.address</name>  
    10.                 <value>logsrv03:8030</value>  
    11.         </property>  
    12.         <property>  
    13.                 <name>yarn.resourcemanager.resource-tracker.address</name>  
    14.                 <value>logsrv03:8031</value>  
    15.         </property>  
    16.         <property>  
    17.                 <name>yarn.resourcemanager.admin.address</name>  
    18.                 <value>logsrv03:8033</value>  
    19.         </property>  
    20.         <property>  
    21.                 <name>yarn.resourcemanager.webapp.address</name>  
    22.                 <value>logsrv03:8088</value>  
    23.         </property>  
    24.         <property>  
    25.                 <name>yarn.nodemanager.aux-services</name>  
    26.                 <value>mapreduce_shuffle</value>  
    27.         </property>  
    28.         <property>  
    29.                 <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>  
    30.                 <value>org.apache.hadoop.mapred.ShuffleHandler</value>  
    31.         </property>  
    32. </configuration>  
    (6)、修改hadoop-2.7.1/etc/hadoop/mapred-site.xml 
    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. <configuration>  
    2. <property>  
    3.                 <name>mapreduce.framework.name</name>  
    4.                 <value>yarn</value>  
    5.         </property>  
    6.         <property>  
    7.                 <name>mapreduce.jobhistory.address</name>  
    8.                 <value>logsrv03:10020</value>  
    9.         </property>  
    10.         <property>  
    11.                 <name>mapreduce.jobhistory.webapp.address</name>  
    12.                 <value>logsrv03:19888</value>  
    13.         </property>  
    14. </configuration>  
    8、这些配置文件配置完毕后,然后将整个hadoop-2.7.1文件复制到各个从机的目录下,这里目录最好与主机一致
    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. [root@logsrv03 hadoop-2.7.1]# scp -r hadoop-2.7.1 root@logsrv02:/usr/local/jiang/  
    2. [root@logsrv03 hadoop-2.7.1]# scp -r hadoop-2.7.1 root@logsrv04:/usr/local/jiang/  

    9、到这里全部配置完毕,然后开始启动hadoop,首先格式化hdfs
    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. [root@logsrv03 hadoop-2.7.1]# bin/hdfs namenode -format  
     
    如果出现successfully formatted则表示格式化成功。
    10、然后启动hdfs
    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. [root@logsrv03 hadoop-2.7.1]# sbin/start-dfs.sh  
     
    到这里,可以查看启动的进程:
    主机logsrv03:
    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. [root@logsrv03 hadoop-2.7.1]# jps   
    2. 29637 NameNode  
    3. 29834 SecondaryNameNode  

    从机logsrv02、logsrv04:
    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. [root@logsrv04 hadoop-2.7.1]# jps   
    2. 20360 DataNode  

    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. [root@logsrv02 hadoop-2.7.1]# jps   
    2. 10774 DataNode  


    11、启动yarn
    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. [root@logsrv03 hadoop-2.7.1]# sbin/start-yarn.sh  

    到这里,启动的进程:
    主机logsrv03:
    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. [root@logsrv03 hadoop-2.7.1]# jps   
    2. 29637 NameNode  
    3. 29834 SecondaryNameNode  
    4. 30013 ResourceManager  

    从机logsrv02、logsrv04:
    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. [root@logsrv02 hadoop-2.7.1]# jps   
    2. 10774 DataNode  
    3. 10880 NodeManager  

    [java] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. [root@logsrv04 hadoop-2.7.1]# jps   
    2. 20360 DataNode  
    3. 20483 NodeManager  

    到这里,恭喜整个集群配置完成,可以通过:http://logsrv03:8088/cluster查看hadoop集群图:

    查看HDFS:















     
  • 相关阅读:
    COM学习(三)——数据类型
    com学习(一)GUID 和 接口
    Dll学习(二)__declspec用法详解
    dll 学习(一)
    PostMessage与SendMessage的区别(二)
    sendmessage和postmessage的区别
    用Java开发代理服务器
    JAVA编写WEB服务器
    【1.3】Django HelloWorld
    【1.2】初识Django应用
  • 原文地址:https://www.cnblogs.com/mingjian/p/6270207.html
Copyright © 2020-2023  润新知