zoukankan      html  css  js  c++  java
  • Hadoop 2.X 集群安装

    使用vmware建立Hadoop 2.X集群环境,实验环境如下:

    机器名    IP地址             操作系统

    master    192.168.1.115     Centos x64

    slave1    192.168.1.111     Centos x64

    slave2    192.168.1.112     Centos x64

    1、安装虚拟机。

    1)安装vmware,用centos x64做一份虚拟系统,网络使用桥接方式,硬盘动态预留40G。

    2)用vmware自带clone功能,克隆出两份副本。

    2、关闭防火墙。

     1)关闭SELINUX,设置SELINUX=disabled,保存退出。 

    vi /etc/selinux/config

     2)关闭防火墙

    /sbin/service iptables stop

     永久关闭

    chkconfig --level 35 iptables off

     3、配置网络。

     手动配置IP地址。

    4、修改主机名和映射。

    1)修改主机名:  

    vi /etc/sysconfig/network

     例如:

     NETWORKING=yes
     HOSTNAME=slave2

    2)修改hosts映射,添加主机映射。

    vi /etc/hosts

     例如:

     192.168.1.115 master
     192.168.1.111 slave1
     192.168.1.112 slave2

     重启网络。

    service network restart

     5、生成ssh免密码(用普通用户生成)

    1)三台机生成密钥对。

    ssh-keygen -t rsa -f ~/.ssh/id_rsa

     2)将slave1和slave2生成的公钥拷贝到master: 

    scp 192.168.1.111:/home/huser/.ssh/id_rsa.pub ./slave1_rsa.pub
    scp 192.168.1.112:/home/huser/.ssh/id_rsa.pub ./slave2_rsa.pub

     master上公钥往本机拷贝一份:

    cp id_rsa.pub master_rsa.pub

    3)3个公钥文件中的内容存放至authorized_keys,采用文本追加的方式:

    cat master_rsa.pub >> authorized_keys
    cat slave1_rsa.pub >> authorized_keys
    cat slave2_rsa.pub >> authorized_keys

    4)生成的authorized_keys需要设置权限:

    chmod 600 authorized_keys 

    5)authorized_keys拷贝到另外两台机器上,ssh免密码登录其他机器测试。

    6、安装JAVA

    1)Linux系统可能自带OpenJDK或者IBMJDK,需要卸载掉重新安装Oracle JDK。

     查看JDK信息:

    rpm -qa|grep java

     卸载已经安装的JAVA,所有安装版本都卸载,直到提示找不到Java环境。

    yum -y remove java-1.6.0-openjdk-1.6.0.0-3.1.13.1.el6_5.x86_64

    2)在/usr下创建一个java目录,将JAVA安装包上传,解压文件

    tar -xzvf jdk-7u51-linux-x64.tar.gz

    3)配置JAVA环境

     先备份 cp /etc/profile /etc/profile.bak

     编辑profile

     先注释一行 

     #export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL

     设置环境变量

    export JAVA_HOME=/usr/java/jdk1.7.0_51
    export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib/tools.jar 
    export JRE_HOME=$JAVA_HOME/jre 
    export PATH=$JAVA_HOME/bin:$PATH

     保存,生效环境变量。

    source /etc/profile

    用java -version查看JAVA环境变量是否设置正确。

    7、安装Hadoop 2.x(用普通用户安装)

    1)下载hadoop-2.2.0.tar.gz,上传到/home/huser/hadoop,解压安装包。

    2)修改etc/hadoop/hadoop-env.sh中的export JAVA_HOME=usr/java/jdk1.7.0_51,即前面安装的JAVA路径。

    3)修改etc/hadoop/yarn-env.sh中的export JAVA_HOME=/usr/java/jdk1.7.0_51,即前面安装的JAVA路径。

    4)修改etc/hadoop/slaves,添加:

    slave1
    slave2

     5)修改etc/hadoop/core-site.xml,在configuration下面添加:

    <property>
      <name>fs.defaultFS</name>
      <value>hdfs://master:9000</value>
    </property>
    <property>
      <name>io.file.buffer.size</name>
      <value>131072</value>
    </property>
    <property>
      <name>hadoop.tmp.dir</name>
      <value>file:/home/huser/hadoop/hadoop-2.2.0/tmp/</value>
      <description>Abase for other temporary directories.</description>
    </property>
    <property>
      <name>hadoop.proxyuser.hduser.hosts</name>
      <value>*</value>
    </property>
    <property>
      <name>hadoop.proxyuser.hduser.groups</name>
      <value>*</value>
    </property>

     ##需要新建tmp文件夹,/home/huser/hadoop/hadoop-2.2.0/tmp/

    6)修改etc/hadoop/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:/home/huser/hadoop/hadoop-2.2.0/name</value>
    </property>
    <property>
      <name>dfs.datanode.data.dir</name>
      <value>file:/home/huser/hadoop/hadoop-2.2.0/data</value>
    </property>
    <property>
      <name>dfs.replication</name>
      <value>1</value>
    </property>
    <property>
      <name>dfs.webhdfs.enabled</name>
      <value>true</value>
    </property>

     ##需要新建name和data文件夹,/home/huser/hadoop/hadoop-2.2.0/name,/home/huser/hadoop/hadoop-2.2.0/data

    7)修改etc/hadoop/mapred-site.xml,在configuration下面添加: 

    <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>

     8)修改etc/hadoop/yarn-site.xml,在configuration下面添加: 

    <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>

     9)以上个别配置文件默认不存在,复制相应的template文件获取。

    10)格式化节点。

    ./bin/hdfs namenode –format

     11)启动hdfs。

    ./sbin/start-dfs.sh

     出现错误报信。

    14/04/19 04:27:19 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
    Starting namenodes on [Java HotSpot(TM) 64-Bit Server VM warning: You have loaded library /home/huser/hadoop/hadoop-2.2.0/lib/native/libhadoop.so.1.0.0 which might have disabled stack guard. The VM will try to fix the stack guard now.
    It's highly recommended that you fix the library with 'execstack -c <libfile>', or link it with '-z noexecstack'.
    master]
    64-Bit: ssh: Could not resolve hostname 64-Bit: Name or service not known
    Server: ssh: Could not resolve hostname Server: Name or service not known
    You: ssh: Could not resolve hostname You: Name or service not known
    warning:: ssh: Could not resolve hostname warning:: Name or service not known

    ##Hadoop本身没有32位和64位区分,但JAVA本身有位数区分,引用了本地库就要注意位数,检查位数file ./libhadoop.so.1.0.0

    ./libhadoop.so.1.0.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, not stripped

    ##可以看出类库是32位,所以会报错,解决办法:

    一种重新编译Hadoop,详见:http://www.cnblogs.com/guarder/p/3697636.html

    二种暂时解决,修改etc/hadoop/hadoop-env.sh:

    export HADOOP_COMMON_LIB_NATIVE_DIR=/home/huser/hadoop/hadoop-2.2.0/lib/native
    export HADOOP_OPTS="-Djava.library.path=/home/huser/hadoop/hadoop-2.2.0/lib"

    12)再次启动集群

    启动hdfs: 

    ./sbin/start-dfs.sh

     启动yarn: 

    ./sbin/start-yarn.sh

     13)查看启动情况。

    master上面进程:

    22143 NameNode
    22529 Jps
    22316 SecondaryNameNode
    22459 ResourceManager

    slave上面进程:

    21438 Jps
    21341 NodeManager
  • 相关阅读:
    Java变量相关
    centos 7安装Docker
    字符串匹配的KMP算法
    [转]关于”算法工程师/机器学习工程师”的笔试和面试总结
    希腊字母与拉丁字母的对应
    决策树和基于决策树的集成方法(DT,RF,GBDT,XGB)复习总结
    机器学习总结
    bat批处理的注释语句
    Python中使用pickle持久化对象
    怎样用通俗的语言解释REST,以及RESTful?
  • 原文地址:https://www.cnblogs.com/guarder/p/3676595.html
Copyright © 2011-2022 走看看