• Centos6 hadoop2.6.0安装笔记


    系统环境:

    linux:Centos6-64bit

    hadoop:hadoop2.6.0

    jdk:1.6.45

    集群方式安装

    一台master,3台slave

    master 192.168.111.100

    slave1  192.168.111.101

    slave2  192.168.111.102

    slave3  192.168.111.103

    0.在每一个节点上建立一个hadoop账户,可以设置密码,也可以不用设置(但,在实际的生成环境中一定要设置)

    1.修改各个主机的hostname

    #vi /etc/sysconfig/network
    ETWORKING=yes
    HOSTNAME=master # 对于主节点master修改成master,在其他的slave节点上也要修改成slave1,slave2,slave3等
    NTPSERVERARGS=iburst

    保存后,继续:

    #hostname master

    然后执行:

    [root@master hadoop]# hostname
    master

    可以看到主机的名字已经改成master,其他的slave机器也这样操作即可。

    2.修改每个节点的/etc/hosts文件:

    #vi /etc/hosts
    127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
    ::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
    
    192.168.111.100 master
    192.168.111.101 slave1
    192.168.111.102 slave2
    192.168.111.103 slave3

    3.hadoop集群master需要ssh登陆的方式给slave节点发送控制命令,首先确认Centos系统是否安装ssh,如果没有安装,请自行安装,同时还要保证master能无密码登陆各个slave节点。

    (1)修改ssh的配置文件 :

    #vi /etc/ssh/sshd_config 
    
    要修改成以下内容:(即打开这些控制)
    
    Port 22
    Protocol 2
    RSAAuthentication yes  //公约和私钥的方式
    PubkeyAuthentication yes
    AuthorizedKeysFile      .ssh/authorized_keys

    (2)无密码登陆

    切换到hadoop用户,

    #sudo -iu hadoop

    执行如下命令:

    #ssh-keygen  -t rsa -P '' -f ~/.ssh/id_rsa

    就会在~/.ssh目录下生成:

    id_rsa  id_rsa.pub  

    其中id_rsa.pub 是公约,要把这个公约拷到master要登陆的slave节点的~/.ssh目录下。如下,可以通过scp命令:

    scp id_rsa.pub  hadoop@192.168.111.101:~/.ssh/    #拷到slave1节点的~/.ssh目录下

    然后进入slave1节点的~/.ssh/目录下,找到id_rsa.pub,执行:
    cat id_rsa.pub >> authorized_keys 

    还有这个步骤的最后一步,如果不修改相对应的权限,会出现登陆要验证密码的情况,所以:

    chmod 700 ~/.ssh
    chmod 600 ~/.ssh/authorized_keys

    此时master可以ssh无密码登陆slave1节点,

    ssh slave1 
    或者
    ssh 192.168.111.101

    可以看到直接进入slave1节点,而且不需要输入密码。

    note如果你不修改/etc/hosts文件,ssh slave1会出现找不到主机的问题,所以,/etc/hosts文件不要忘记修改。

    在其他的slave2,slave3节点安装上述方法重复做一遍即可。

    4.在每一台节点上安装jdk,到Oracle下载jdk文件,我的系统安装的是:jdk-6u45-linux-x64.bin 

    拷到/usr/目录下 执行:

    chmod 777 jdk-6u45-linux-x64.bin
    ./jdk-6u45-linux-x64.bin

    可以看到:

    在/usr路径下 出现:

    /usr/jdk1.6.0_45

    然后做一个软连接,

    ln -s /usr/jdk1.6.0_45   /usr/jdk

    这样以后如果升级的话,修改一下链接就好了,便于升级。

    5.安装hadoop,安装路径可以自定义,但是也不要太偏了,我在/usr/local/目录下建了一个hadoop目录,然后把hadoop包拷到/usr/local/hadoop/目录下:

    tar zxvf hadoop-2.6.0.tar.gz

    在做一个软连接,道理同上。

    ln -s /usr/local/hadoop/hadoop-2.6.0   /usr/local/hadoop/hadoop-release

    为了保证hadoop用户对hadoop目录的可操作。要修改一下这个目录的用户组和user,命令:

     chown -R hadoop:hadoop /usr/local/hadoop/  # -R 表示递归处理每一个目录下的文件

    现在开始修改环境变量,这样就可以在任何地方都可以使用相对应的java和hadoo命令:我们这里在/etc/profile文件中修改:

    export JAVA_HOME=/usr/jdk  #java环境变量
    export HADOOP_HOME=/usr/local/hadoop/hadoop-release  #hadoop环境变量
    export   PATH=$JAVA_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH

    修改完之后,重生效一下:

    source /etc/profile

    6.修改hadoop的配置文件:

    进入 /usr/local/hadoop/hadoop-release/etc/hadoop/ 可以看到一些配置文件:

    capacity-scheduler.xml      httpfs-env.sh            mapred-env.sh
    configuration.xsl           httpfs-log4j.properties  mapred-queues.xml.template
    container-executor.cfg      httpfs-signature.secret  mapred-site.xml
    core-site.xml               httpfs-site.xml          mapred-site.xml.template
    hadoop-env.cmd              kms-acls.xml             slaves
    hadoop-env.sh               kms-env.sh               ssl-client.xml.example
    hadoop-metrics2.properties  kms-log4j.properties     ssl-server.xml.example
    hadoop-metrics.properties   kms-site.xml             yarn-env.cmd
    hadoop-policy.xml           log4j.properties         yarn-env.sh
    hdfs-site.xml               mapred-env.cmd           yarn-site.xml

    需要配置的有core-site.xml hadoop-env.sh hdfs-site.xml mapred-site.xml yarn-site.xml

    (1)先修改core-site.xml.在这里我们要指定使用的文件系统:

    <configuration>
    <property>
    <name>fs.defaultFS</name>
    <value>hdfs://master:9000</value> #使用hdfs,master节点,端口9000
    </property>
    </configuration>

    (2)在修改hadoop-env.sh

    这里主要是添加jdk环境变量:

    # The java implementation to use.
    #export JAVA_HOME=${JAVA_HOME}
    
    export JAVA_HOME=/usr/jdk

    至于:

    HADOOP_NAMENODE_OPTS

    HADOOP_DATANODE_OPTS

    HADOOP_SECONDARYNAMENODE_OPTS

    HADOOP_CLIENT_OPTS

    调整namenode,datanode,secondaryNamenode,client的jvm参数

    HADOOP_LOG_DIR

    namenode,datanode,secondaryNamenode写log的路径,需要对hadoop帐号可读

    这些,目前使用默认,这些可以对hadoop系统进行优化。

    (3)再修改 hdfs-site.xml 

    <configuration>
    <property>
    <name>dfs.replication</name> #在hdfs上每一块数据做几份,默认是使用3份,这里有3个slave,所以也设置成3
    <value>3</value>
    </property>
    <property>
    <name>dfs.namenode.name.dir</name> # namenode保存元数据的位置,要对hadoop用户可读写,可以设置多个路径,用逗号分隔,每一个路径都保存一份Namenode
    <value>/data/dfs/name</value>
    </property>
    <property>
    <name>dfs.namenode.checkpoint.dir</name> #secondNamenode保存元数据的位置,要对hadoop用户可读写
    <value>/data/dfs/namesecondary</value>
    </property>
    <property>
    <name>dfs.namenode.http-address</name> #通过http访问namenode,查看namenode的情况
    <value>master:50070</value>
    </property>
    <property>
    <name>dfs.datanode.data.dir</name> # datanode 的存放位置,保存的是真实的数据,可以写多个路径,用逗号分隔,所有的这些路径用来保存数据

    <value>/data/dfs/data</value>
    </property>
    <property>
    <name>dfs.blocksize</name> #hdfs文件系统块的大小,默认是64M,这里我们设置成256M
    <value>268435456</value>
    </property>
    <property>
    </configuration>

    (4)再修改mapred-site.xml

    <configuration>
      <property>
        <name>mapreduce.jobhistory.address</name> #设置mapreduce历史服务器的地址
        <value>master:10020</value>
      </property>
      <property>
        <name>mapreduce.jobhistory.webapp.address</name> #设置mapreduce历史服务器的web访问地址
        <value>master:8087</value>
        <final>true</final>
      </property>
      <property>
        <name>mapreduce.framework.name</name> #采用yarn框架启动
        <value>yarn</value>
      </property>
      <property>
        <name>yarn.app.mapreduce.am.resource.mb</name> # mapreduce的AM(Application Mater)申请的内存(推荐1G)
        <value>1024</value>
      </property>
      <property>
        <name>yarn.app.mapreduce.am.resource.cpu-vcores</name>#mapreduce的AM申请的cpu数量(推荐1个)
        <value>1</value>
      </property>
     <property>
        <name>mapreduce.map.memory.mb</name>#mapreduce中maptask申请的(向RM申请)内存,推荐1G-2G
        <value>1024</value>
      </property>
      <property>
        <name>mapreduce.map.cpu.vcores</name>#mapreduce中reducetask申请的cpu数,推荐1个
        <value>1</value>
      </property>
      <property>
        <name>mapreduce.reduce.memory.mb</name>#mapreduce中reducetask申请的内存(向RM申请),推荐1G-2G
        <value>1024</value>
      </property>
      <property>
        <name>mapreduce.reduce.cpu.vcores</name>#mapreduce中reducetask申请的cpu数
        <value>1</value>
      </property>
    </configuration>

    (5)修改yarn-site.xml

     <property>
        <name>yarn.resourcemanager.hostname</name>#ResourceManager所在主机名字
        <value>master</value>
      </property>
      <property>
        <name>yarn.resourcemanager.address</name> # ResourceManager地址,slave节点访问这个地址申请资源
        <value>master:8032</value>
      </property>
      <property>
        <name>yarn.resourcemanager.webapp.address</name> #通过webui访问ResourceManager地址
        <value>master:8088</value>
      </property>
      <property>
        <name>yarn.nodemanager.resource.memory-mb</name> #这个nodemanager上有多少内存资源可以分配,总的内存数量减去2,因为datanode和NM要各使用1G
        <value>2048</value>
      </property>
      <property>
        <name>yarn.web-proxy.address</name>
        <value>master:8089</value>
      </property>
      <property>
        <name>yarn.resourcemanager.scheduler.class</name> #ResourceManager使用的调度方法,这里使用的fail调度方法
      <value>org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler</value>
      </property>
      <property>
        <name>yarn.nodemanager.resource.cpu-vcores</name> #这个nodemanager上可分配的cpu数量,总cpu数量-2,DataNode和nodemanager各使用一个
        <value>2</value>
      </property>
    </configuration>

    有些配置文件中设置了一些路径。如:/data/dfs,这些路径要手动建立,而且对hadoop用户要可读写,

    建立这些目录:

    hadoop fs -mkdir /data/dfs 
    hadoop fs -chown hadoop:hadoop /data/dfs

    此时主机上的hadoop已经安装完成,下面在每一台slave节点上都要做相同的步骤,简单的方法是把master节点上的hadoop拷到slave1,2,3节点正确的(正确即和master节点路径相同)路径下。最简单的方式是下载pssh,进行同步操作,这里就不详细说明了。

    7.上述步骤做完之后在master节点上格式化HDFS文件系统,:

    hadoop namenode -format

    然后在master节点启动hadoop:

    start-all.sh

    如果需要启动mapreduce的历史服务器,执行:

    mr-jobhistory-daemon.sh start historyserver

    最后在各个slave节点上启动datanode:

    hadoop-daemon.sh start datanode

    8.在master节点上键入 : jps命令,即可查看相对于的进程:

    3544 Secondnamenode
    3654 Namenode
    3578 ResourceManager
    15789 Jps

    在slave节点上键入jps命令:

    3785 DataNode
    3594 NodeManager
    15789 Jps

    自此,hadoop集群部署完毕,在部署的过程中可能会出现各种问题,不要着急,慢慢的查找就会解决。

  • 相关阅读:
    会话执行存储过程,等待被阻塞,Kill session场景模拟
    会话断开数据保存情况
    Linux关闭透明大页配置
    ORA16019搭建DG设置归档线程参数报错
    如何将openssl、uuid和crypto的库文件放到本地指定库目录
    cscope中这样生成cscope.files
    使用kdesvn完成tags和branch功能
    ubuntu中设定ibus自启动
    使用kdesvn提交文件出现Aborting commit:'.lcd1602.ko.cmd' remains in conflict错误提示
    error: dereferencing pointer to incomplete type的解决办法
  • 原文地址:https://www.cnblogs.com/chenyu123/p/4387158.html
Copyright © 2020-2023  润新知