Hadoop集群部署

简介
Hadoop是Apache软件基金会旗下的一个开源分布式计算平台。以Hadoop分布式文件系统HDFS(Hadoop Distributed Filesystem)和MapReduce(Google MapReduce的开源实现)为核心的Hadoop为用户提供了系统底层细节透明的分布式基础架构。
对于Hadoop的集群来说,能够分红两大类角色:Master和Salve。一个HDFS集群是由一个NameNode和若干个DataNode组成的。其中NameNode做为主服务器,管理文件系统的命名空间和客户端对文件系统的访问操做;集群中的DataNode管理存储的数据。MapReduce框架是由一个单独运行在主节点上的JobTracker和运行在每一个从节点的TaskTracker共同组成的。主节点负责调度构成一个做业的全部任 务,这些任务分布在不一样的从节点上。主节点监控它们的执行状况,而且从新执行以前的失败任务;从节点仅负责由主节点指派的任务。当一个Job被提交时,JobTracker接收到提交做业和配置信息以后,就会将配置信息等分发给从节点,同时调度任务并监控TaskTracker的执行。
从上面的介绍能够看出,HDFS和MapReduce共同组成了Hadoop分布式系统体系结构的核心。HDFS在集群上实现分布式文件系统,MapReduce在集群上实现了分布式计算和任务处理。HDFS在MapReduce任务处理过程当中提供了文件操做和存储等支持,MapReduce在HDFS的基础上实现了任务的分发、跟踪、执行等工做,并收集结果,两者相互做用,完成了Hadoop分布式集群的主要任务。html

安装包:http://hadoop.apache.org/releases.html#Release+Notesjava

1:环境准备
3台机器,系统自定
>1. 下载jdk包,配置环境变量  http://www.Oracle.com/technetwork/java/javase/index.html
>2. 配置虚拟环境
    dns解析
    vim  /etc/resolv.conf 
        nameserver 223.5.5.5
    主机路由
    vim /etc/hosts
        127.0.0.1       localhost localhost.localdomain
        10.68.4.49      master
        10.68.4.55      slave1
        10.68.4.56      slave2
    更改主机名
    hostname master  ###退出从新登陆 或者 [root@master ~]#  经过这个能够看到主机名是否已经变成你须要的
    ####上述很重要,若是仍是localhost的,后续启动端口时,会以127.0.0.1启动,主从不能相互通讯

    
>3. 测试
    互ping  ping master;ping slave1 成功说明环境OKnode

2:ssh无秘钥认证
Hadoop运行过程当中须要管理远端Hadoop守护进程,在Hadoop启动之后,NameNode是经过SSH(Secure Shell)来启动和中止各个DataNode上的各类守护进程的。这就必须在节点之间执行指令的时候是不须要输入密码的形式,故咱们须要配置SSH运用无密码公钥认证的形式,这样NameNode使用SSH无密码登陆并启动DataName进程,一样原理,DataNode上也能使用SSH无密码登陆到 NameNode。
注意:若是你的Linux没有安装SSH,请首先安装SSH
Ubuntu下安装ssh:sudo apt-get install openssh-server
Fedora下安装ssh:yum install openssh-server
>1. 建立无密码秘钥对
    ssh-keygen  -t rsa
    三回车便可
    根据回车以后的内容能够判断在当前用户的家目录下产生了id_rsa id_rsa.pub 
    查验当前用户家目录下是否有.ssh 目录,若无建立此目录
    ls -al /home/user/
    mkdir /home/user/.ssh
    cd /home/user/.ssh
    cat id_rsa.pub >>authorized_keys   ####把上述建立的文件追到到此文件中
    chmod 700 -R /home/user 
    chmod 755 /home/user/.ssh
    chmod 600 /home/user/.ssh/authorized_keys
>2. 开启秘钥认证
    vim /etc/ssh/sshd_config 
    PermitRootLogin yes     ####避免不能登陆,能够先放开root登陆权限
    RSAAuthentication yes    ###注释掉这三行即为开启秘钥认证
    PubkeyAuthentication yes
    AuthorizedKeysFile      .ssh/authorized_keysweb

>3. 重启ssh服务
    /etc/init.d/sshd restart or service sshd restart or centos7:systemctl restart sshd.service 
>4. 把公钥拷贝到其它机器上,并追加到authorized_keys此文件中apache

>5. 全部机器重复上述操做vim

>6. 校验
    ssh slave ####第一次认证须要输入yes,再次测试不须要输入任何东西登陆成功即为OKcentos

3:hadoop 安装,先安装一台,其他的直接scp过去便可
>1. 解压包至你想要的目录
    个人是/usr/local/hadoop
    mkdir /usr/local/hadoop/tmp
    设置Hadoop环境变量
    export HADOOP_HOME=/usr/hadoop
    export PATH=$PATH :$HADOOP_HOME/bin
>2. 配置文件
    cd /usr/local/hadoop/etc/hadoop
    vim core-site.xml
    <configuration>
        <property>
                <name>hadoop.tmp.dir</name>
                <value>/data/hadoop/tmp</value>
                <!--临时目录得提早建立才行-->
                 <description>A base for other temporary directories.</description>
         </property>
    <!-- file system properties -->
         <property>
                <name>fs.default.name</name>
                 <value>hdfs://master:9000</value>
         </property>
    </configuration>
    
    vim hadoop-env.sh  ####指定jdk路径
    export JAVA_HOME=/data/java/jdk安全

    vim hdfs-site.xml 
    <configuration>
       <property>
                <name>dfs.namenode.secondary.http-address</name>
               <value>master:9001</value>
       </property>
     <!--property>  
             <name>dfs.namenode.name.dir</name>  
             <value>file:/usr/hadoop/dfs/name</value>  
       </property-->
      <!--property>  
              <name>dfs.datanode.data.dir</name>  
              <value>file:/usr/hadoop/dfs/data</value>  
       </property-->
       <property>
               <name>dfs.replication</name>
               <value>3</value>
        </property>
        <property>
                 <name>dfs.webhdfs.enabled</name>
                  <value>true</value>
         </property>
    </configuration>服务器

    vim  mapred-site.xml
    <configuration>
        <!--property>
                <name>mapred.job.tracker</name>
                <value>http://10.68.4.49:9001</value>
        </property-->
          <property>
                <name>mapreduce.framework.name</name>
                <value>yarn</value>
           </property>
          <property>
                  <name>mapreduce.jobhistory.address</name>
                  <value>master:10020</value>
          </property>
          <property>
                <name>mapreduce.jobhistory.webapp.address</name>
                <value>master:19888</value>
       </property>
    </configuration>架构

     vim yarn-site.xml 
     <configuration>

    <!-- Site specific YARN configuration properties -->
       <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>
        <property>
               <name>yarn.resourcemanager.address</name>
               <value>master:8032</value>
       </property>
       <property>
               <name>yarn.resourcemanager.scheduler.address</name>
               <value>master:8030</value>
       </property>
       <property>
            <name>yarn.resourcemanager.resource-tracker.address</name>
             <value>master:8031</value>
      </property>
      <property>
              <name>yarn.resourcemanager.admin.address</name>
               <value>master:8033</value>
       </property>
       <property>
               <name>yarn.resourcemanager.webapp.address</name>
               <value>master:8088</value>
       </property>
    </configuration>
    
    vim  slaves
    slave1
    slave2

>3. 拷贝至其余机器
    scp -r /usr/local/hadoop user@IP:/usr/local
    
>4. server 格式化hdfs文件系统
    Hadoop namenode -format ###初次启动才须要
    cd /usr/local/hadoop/sbin
    主从依次启动
    ./start-all.sh

>5. 校验
     hadoop dfsadmin -report   查看Hadoop集群的状态
    

    也能够经过jps查看
    
    网页校验
    http://10.68.4.49:8088

    
    http://10.68.4.49:50070
    
    若是不行的话就看日志吧
    日志默认目录:/usr/local/hadoop/logs
    能够自定义,修改此文件:vim /usr/local/hadoop/etc/hadoop/log4j.properties
    
    hadoop dfsadmin -safemode leave  关闭安全模式

    各文件参数详解见:

    http://www.cnblogs.com/yinghun/p/6230436.html