• 浪子   2014/7/8 12:54:00
  • 在完全分布式环境下进行Hadoop2.3的安装与配置
  • 关键字: Hadoop 分布式 大数据
  •  一、Hadoop基本介绍

    Hadoop优点

    1.高可靠性:Hadoop按位存储和处理数据

    2.高扩展性:Hadoop是在计算机集群中完成计算任务,这个集群可以方便的扩展到几千台

    3.高效性:Hadoop能够在节点之间动态地移动数据,并保证各个节点的动态平衡,因此处理速度快

    4.高容错性:Hadoop能够自动保存数据的多个副本,并且能够自动将失败的任务重新分配

    5.低成本:Hadoop是开源的,集群是由廉价的PC机组成

    Hadoop架构和组件

    Hadoop是一个分布式系统基础架构,底层是HDFS(Hadoop Distributed File System)分布式文件系统,它存储Hadoop集群中所有存储节点上的文件(64MB块),HDFS上一层是MapReduce引擎(分布式计算框架),对分布式文件系统中的数据进行分布式计算。

    1.HDFS架构

    NameNode:Hadoop集群中只有一个NameNode,它负责管理HDFS的目录树和相关文件的元数据信息

    Sencondary NameNode:有两个作用,一是镜像备份,二是日志与镜像定期合并,并传输给NameNode

    DataNode:负责实际的数据存储,并将信息定期传输给NameNode

    2.MapReduce架构(Hadoop0.23以后采用MapReduce v2.0或Yarn)

    Yarn主要是把jobtracker的任务分为两个基本功能:资源管理和任务调度与监控,ResourceManager和每个节点(NodeManager)组成了新处理数据的框架。

    ResourceManager:负责集群中的所有资源的统一管理和分配,接受来自各个节点(NodeManager)的资源汇报信息,并把这些信息按照一定的策略分配给各种应用程序(ApplicationMaster)。

    NodeManager:与ApplicationMaster承担了MR1框架中的tasktracker角色,负责将本节点上的资源使用情况和任务运行进度汇报给ResourceManager。

    MapReduce v1.0框架(图1)


    MapReduce v2.0框架(图2)

    环境介绍:

    master-hadoop 192.168.0.201

    slave1-hadoop 192.168.0.202

    slave2-hadoop 192.168.0.203

    最新稳定版:http://www.apache.org/dist/hadoop/core/hadoop-2.3.0/

    JDK下载:http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html

    参考官方文档:http://hadoop.apache.org/docs/r2.3.0/hadoop-project-dist/hadoop-common/ClusterSetup.html

    Hadoop三种运行方式:单节点方式(单台)、单机伪分布方式(一个节点的集群)与完全分布式(多台组成集群)

    二、准备环境

    1.Hadoop是用Java开发的,必须要安装JDK1.6或更高版本

    2.Hadoop是通过SSH来启动slave主机中的守护进程,必须安装OpenSSH

    3.Hadoop更新比较快,我们采用最新版hadoop2.3来安装

    4.配置对应Hosts记录,关闭iptables和selinux(过程略)

    5.创建相同用户及配置无密码认证

    三、安装环境(注:三台配置基本相同)

    1.安装JDK1.7

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    [[email protected] ~]# tar zxvf jdk-7u17-linux-x64.tar.gz
    [[email protected] ~]# mv jdk1.7.0_17/ /usr/local/jdk1.7
    [[email protected] ~]# vi/etc/profile    #末尾添加变量
    JAVA_HOME=/usr/local/jdk1.7
    PATH=$PATH:$JAVA_HOME/bin
    CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib
    export JAVA_HOME CLASSPATHPATH
    [[email protected] ~]#source /etc/profile
    [[email protected] ~]# java-version      #显示版本说明配置成功
    java version"1.7.0_17"
    Java(TM) SE RuntimeEnvironment (build 1.7.0_17-b02)
    Java HotSpot(TM) 64-BitServer VM (build 23.7-b01, mixed mode)
    2.创建hadoop用户,指定相同UID

    1
    2
    3
    4
    5
    6
    [[email protected] ~]#useradd -u 600 hadoop
    [[email protected] ~]#passwd hadoop
    Changing password for userhadoop.
    New password:
    Retype new password:
    passwd: all authenticationtokens updated successfully.
    3.配置SSH无密码登录(注:master-hadoop本地也要实现无密码登录)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    [[email protected] ~]# su - hadoop
    [[email protected] ~]$ ssh-keygen -t rsa     #一直回车生成密钥
    [[email protected] ~]$ cd/home/hadoop/.ssh/
    [[email protected] .ssh]$ ls
    id_rsa  id_rsa.pub
    [[email protected] ~]$ mkdir /home/hadoop/.ssh   #登录两台创建.ssh目录
    [[email protected] ~]$ mkdir /home/hadoop/.ssh
    [[email protected] .ssh]$ scp id_rsa.pub [email protected]:/home/hadoop/.ssh/
    [[email protected] .ssh]$ scp id_rsa.pub [email protected]:/home/hadoop/.ssh/
    [[email protected] ~]$ cd/home/hadoop/.ssh/
    [[email protected] .ssh]$ cat id_rsa.pub >> authorized_keys
    [[email protected] .ssh]$ chmod 600 authorized_keys
    [[email protected] .ssh]$ chmod 700 ../.ssh/   #目录权限必须设置700
    [[email protected] ~]# vi /etc/ssh/sshd_config   #开启RSA认证
    RSAAuthentication yes
    PubkeyAuthentication yes
    AuthorizedKeysFile      .ssh/authorized_keys
    [[email protected] ~]# service sshd restart
    四、Hadoop的安装与配置(注:三台服务器配置一样,使用scp复制过去)

    1
    2
    3
    4
    5
    6
    7
    [[email protected] ~]# tar zxvf hadoop-2.3.0.tar.gz -C /home/hadoop/
    [[email protected] ~]# chown hadoop.hadoop -R /home/hadoop/hadoop-2.3.0/
    [[email protected] ~]# vi /etc/profile   #添加hadoop变量,方便使用
    HADOOP_HOME=/home/hadoop/hadoop-2.3.0/
    PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
    export HADOOP_HOME PATH
    [[email protected] ~]# source /etc/profile
    1. hadoop-env.sh设置jdk路径

    1
    2
    3
    [[email protected] ~]$ cd hadoop-2.3.0/etc/hadoop/
    [[email protected] hadoop]$ vi hadoop-env.sh
    export JAVA_HOME=/usr/local/jdk1.7/
    2.slaves设置从节点

    1
    2
    3
    [[email protected]]$ vi slaves
    slave1-hadoop
    slave2-hadoop
    3.core-site.xml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <configuration>
    <property>
    <name>fs.defaultFS</name>
    </property>
    <property>
    <name>io.file.buffer.size</name>
    <value>131072</value>
    </property>
    <property>
    <name>hadoop.tmp.dir</name>
    <value>file:/home/hadoop/tmp</value>
    </property>
    </configuration>
    4.hdfs-site.xml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <configuration>
    <property>
    <name>dfs.namenode.name.dir</name>
    <value>file:/home/hadoop/dfs/name</value>
    </property>
    <property>
    <name>dfs.namenode.data.dir</name>
    <value>file:/home/hadoop/dfs/data</value>
    </property>
    <property>
    <name>dfs.replication</name>    #数据副本数量,默认3,我们是两台设置2
    <value>2</value>
    </property>
    </configuration>
    5.yarn-site.xml
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <configuration>
    <property>
    <name>yarn.resourcemanager.address</name>
    <value>master-hadoop:8032</value>
    </property>
    <property>
    <name>yarn.resourcemanager.scheduler.address</name>
    <value>master-hadoop:8030</value>
    </property>
    <property>
    <name>yarn.resourcemanager.resource-tracker.address</name>
    <value>master-hadoop:8031</value>
    </property>
    <property>
    <name>yarn.resourcemanager.admin.address</name>
    <value>master-hadoop:8033</value>
    </property>
    <property>
    <name>yarn.resourcemanager.webapp.address</name>
    <value>master-hadoop:8088</value>
    </property>
    <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce_shuffle</value>
    </property>
    <property>
       <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
       <value>org.apache.hadoop.mapred.ShuffleHandler</value>
    </property>
    </configuration>
    6.mapred-site.xml

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <configuration>
    <property>