zoukankan      html  css  js  c++  java
  • Spark入门实战系列--2.Spark编译与部署(中)--Hadoop编译安装

    【注】该系列文章以及使用到安装包/測试数据 能够在《[倾情大奉送–Spark入门实战系列] (http://blog.csdn.net/yirenboy/article/details/47291765)》获取

    1 编译Hadooop

    1.1 搭建好开发环境

    1.1.1 安装并设置maven

    1.下载maven安装包。建议安装3.0以上版本号,本次安装选择的是maven3.0.5的二进制包,下载地址例如以下
    http://mirror.bit.edu.cn/apache/maven/maven-3/
    这里写图片描写叙述

    2.使用ssh工具把maven包上传到/home/hadoop/upload文件夹
    这里写图片描写叙述

    3.解压缩apache-maven-3.0.5-bin.tar.gz包

    $tar -zxvf apache-maven-3.0.5-bin.tar.gz

    这里写图片描写叙述

    4.把apache-maven-3.0.5文件夹移到/usr/local文件夹下

    $sudo mv apache-maven-3.0.5 /usr/local

    这里写图片描写叙述

    5.在/etc/profile配置文件里增加例如以下设置

    export PATH=$JAVA_HOME/bin:/usr/local/apache-maven-3.0.5/bin:$PATH

    这里写图片描写叙述

    6.编辑/etc/profile文件并验证配置是否成功:

    $source /etc/profile
    $mvn -version

    这里写图片描写叙述

    1.1.2 以root用户使用yum安装svn

    #yum install svn

    这里写图片描写叙述

    这里写图片描写叙述

    1.1.3 以root用户使用yum安装autoconf automake libtool cmake

    #yum install autoconf automake libtool cmake

    这里写图片描写叙述

    这里写图片描写叙述

    1.1.4 以root用户使用yum安装ncurses-devel

    #yum install ncurses-devel

    这里写图片描写叙述

    1.1.5 以root用户使用yum安装openssl-devel

    #yum install openssl-devel

    这里写图片描写叙述

    这里写图片描写叙述

    1.1.6 以root用户使用yum安装gcc**

    #yum install gcc*

    这里写图片描写叙述

    这里写图片描写叙述

    1.1.7 安装并设置protobuf

    注:该程序包须要在gcc安装完成后才干安装。否则提示无法找到gcc编译器。
    1.下载protobuf安装包
    下载链接为: https://code.google.com/p/protobuf/downloads/list
    这里写图片描写叙述

    2.使用ssh工具把protobuf-2.5.0.tar.gz包上传到/home/hadoop/Downloads文件夹
    这里写图片描写叙述

    3.解压安装包

    $tar -zxvf protobuf-2.5.0.tar.gz

    这里写图片描写叙述

    这里写图片描写叙述

    4.把protobuf-2.5.0文件夹转移到/usr/local文件夹下

    $sudo mv protobuf-2.5.0 /usr/local

    这里写图片描写叙述

    5.进行文件夹执行命令
    进入文件夹以root用户执行例如以下命令:

    #./configure
    #make
    #make check
    #make install

    这里写图片描写叙述

    这里写图片描写叙述

    6.验证是否成功安装
    执行成功之后,通过例如以下方式来验证是否成功安装

    #protoc

    这里写图片描写叙述

    1.2 编译Hadoop

    1.2.1 下载Hadoop源码 Release2.2.0

    通过SVN获取Hadoop2.2.0源码。在/home/hadoop/Downloads文件夹下命令:

    $svn checkout http://svn.apache.org/repos/asf/hadoop/common/tags/release-2.2.0

    获取时间较长,大小约75.3M
    这里写图片描写叙述

    1.2.2 编译Hadoop源码

    :) 因为hadoop2.2.0在svn中pom.xml有点问题,会造成编译中出错。可先參考3.2修复该问题。在Hadoop源码的根文件夹执行例如以下命令:
    $mvn package -Pdist,native -DskipTests –Dtar
    (注意:这行命令须要手工输入,假设复制执行会报异常!)
    这里写图片描写叙述

    耗费的时间较长。总共花费了32分钟。在编译过程须要联网,从网络中下载所须要的资料。
    这里写图片描写叙述

    这里写图片描写叙述

    1.2.3 验证编译是否成功

    到 hadoop-dist/target/hadoop-2.2.0/lib/native 文件夹中查看libhadoop.so.1.0.0属性:

    $file ./libhadoop.so.1.0.0

    该文件为ELF 64-bit LSB则表示文件成功编译为64位
    这里写图片描写叙述

    在hadoop-dist/target文件夹中已经打包好了hadoop-2.2.0.tar.gz,该文件作为Hadoop2.X 64位安装包。
    这里写图片描写叙述

    2 安装Hadoop

    2.1 配置准备

    2.1.1 上传并解压Hadoop安装包

    1.在Apache站点上提供Hadoop2.X安装包仅仅支持32位操作系统安装,在64位server安装会出现4.1的错误异常。我们使用上一步骤编译好的hadoop-2.2.0.tar.gz文件作为安装包(也能够从网上下载native文件夹或者打包好的64位hadoop安装包),使用” Spark编译与部署(上)”中1. 3.1介绍的工具上传到/home/hadoop/upload 文件夹下
    这里写图片描写叙述

    2.在主节点上解压缩

    $cd /home/hadoop/upload/
    $tar -xzf hadoop-2.2.0.tar.gz

    这里写图片描写叙述

    3.把hadoop-2.2.0文件夹移到/app/hadoop文件夹下

    $ mv hadoop-2.2.0 /app/hadoop
    $ls /app/hadoop

    这里写图片描写叙述

    2.1.2 在Hadoop文件夹下创建子文件夹

    hadoop用户在/app/hadoop/hadoop-2.2.0文件夹下创建tmp、name和data文件夹

    $cd /app/hadoop/hadoop-2.2.0/
    $mkdir tmp
    $mkdir name
    $mkdir data
    $ll

    这里写图片描写叙述

    2.1.3 配置hadoop-env.sh

    1.打开配置文件hadoop-env.sh

    $cd /app/hadoop/hadoop-2.2.0/etc/hadoop
    $sudo vi hadoop-env.sh

    这里写图片描写叙述

    2.增加配置内容,设置JAVA_HOME和PATH路径

    export JAVA_HOME=/usr/lib/java/jdk1.7.0_55
    export PATH=$PATH:/app/hadoop/hadoop-2.2.0/bin

    这里写图片描写叙述

    3.编译配置文件hadoop-env.sh,并确认生效

    $source hadoop-env.sh
    $hadoop version

    这里写图片描写叙述

    2.1.4 配置yarn-env.sh

    1.在/app/hadoop/hadoop-2.2.0/etc/hadoop打开配置文件yarn-env.sh

    $cd /app/hadoop/hadoop-2.2.0/etc/hadoop
    $sudo vi yarn-env.sh

    这里写图片描写叙述

    2.增加配置内容,设置JAVA_HOME路径

    export JAVA_HOME=/usr/lib/java/jdk1.7.0_55

    这里写图片描写叙述

    3.编译配置文件yarn-env.sh,并确认生效

    $source yarn-env.sh

    这里写图片描写叙述

    2.1.5 配置core-site.xml

    1.使用例如以下命令打开core-site.xml配置文件

    $sudo vi core-site.xml

    这里写图片描写叙述

    2.在配置文件里,依照例如以下内容进行配置

    <configuration>
      <property>
        <name>fs.default.name</name>
        <value>hdfs://hadoop1:9000</value>
      </property>
      <property>
        <name>fs.defaultFS</name>
        <value>hdfs://hadoop1:9000</value>
      </property>
      <property>
        <name>io.file.buffer.size</name>
        <value>131072</value>
      </property>
      <property>
        <name>hadoop.tmp.dir</name>
        <value>file:/app/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>
    </configuration>

    这里写图片描写叙述

    2.1.6 配置hdfs-site.xml

    1.使用例如以下命令打开hdfs-site.xml配置文件

    $sudo vi hdfs-site.xml

    这里写图片描写叙述

    2.在配置文件里,依照例如以下内容进行配置

    <configuration>
      <property>
       <name>dfs.namenode.secondary.http-address</name>
       <value>hadoop1:9001</value>
      </property>
      <property>
       <name>dfs.namenode.name.dir</name>
       <value>file:/app/hadoop/hadoop-2.2.0/name</value>
      </property>
      <property>
       <name>dfs.datanode.data.dir</name>
       <value>file:/app/hadoop/hadoop-2.2.0/data</value>
      </property>
      <property>
       <name>dfs.replication</name>
       <value>2</value>
      </property>
      <property>
       <name>dfs.webhdfs.enabled</name>
       <value>true</value>
      </property>
    </configuration>

    这里写图片描写叙述

    2.1.7 配置mapred-site.xml

    1.默认情况下不存在mapred-site.xml文件,能够从模板拷贝一份

    $cp mapred-site.xml.template mapred-site.xml

    这里写图片描写叙述

    2.使用例如以下命令打开mapred-site.xml配置文件

    $sudo vi mapred-site.xml

    这里写图片描写叙述

    3.在配置文件里,依照例如以下内容进行配置

    <configuration>
      <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
      </property>
      <property>
        <name>mapreduce.jobhistory.address</name>
        <value>hadoop1:10020</value>
      </property>
      <property>
        <name>mapreduce.jobhistory.webapp.address</name>
        <value>hadoop1:19888</value>
      </property>
    </configuration>

    这里写图片描写叙述

    2.1.8 配置yarn-site.xml

    1.使用例如以下命令打开yarn-site.xml配置文件

    $sudo vi yarn-site.xml

    这里写图片描写叙述

    2.在配置文件里。依照例如以下内容进行配置

    <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>hadoop1:8032</value>
      </property>
      <property>
        <name>yarn.resourcemanager.scheduler.address</name>
        <value>hadoop1:8030</value>
      </property>
      <property>
        <name>yarn.resourcemanager.resource-tracker.address</name>
        <value>hadoop1:8031</value>
      </property>
      <property>
        <name>yarn.resourcemanager.admin.address</name>
        <value>hadoop1:8033</value>
      </property>
      <property>
        <name>yarn.resourcemanager.webapp.address</name>
        <value>hadoop1:8088</value>
      </property>
    </configuration>

    这里写图片描写叙述

    2.1.9 配置Slaves文件

    使用$sudo vi slaves打开从节点配置文件,在文件里增加

    hadoop1
    hadoop2
    hadoop3

    这里写图片描写叙述

    2.1.10 向各节点分发Hadoop程序

    1.确认hadoop2和hadoop3节点/app/hadoop所属组和用户均为hadoop,然后进入hadoop1机器/app/hadoop文件夹,使用例如以下命令把hadoop文件夹拷贝到hadoop2和hadoop3机器

    $cd /app/hadoop
    $scp -r hadoop-2.2.0 hadoop@hadoop2:/app/hadoop/
    $scp -r hadoop-2.2.0 hadoop@hadoop3:/app/hadoop/

    这里写图片描写叙述

    这里写图片描写叙述

    2.在从节点查看是否复制成功

    这里写图片描写叙述

    2.2 启动部署

    2.2.1 格式化NameNode

    $cd /app/hadoop/hadoop-2.2.0/
    $./bin/hdfs namenode -format

    这里写图片描写叙述

    这里写图片描写叙述

    2.2.2 启动HDFS

    $cd /app/hadoop/hadoop-2.2.0/sbin
    $./start-dfs.sh

    这里写图片描写叙述

    假设server操作系统为32位时,出现故障3.1异常,能够參考解决

    2.2.3 验证HDFS启动

    此时在hadoop1上面执行的进程有:NameNode、SecondaryNameNode和DataNode
    这里写图片描写叙述

    hadoop2和hadoop3上面执行的进程有:NameNode和DataNode
    这里写图片描写叙述

    2.2.4 启动YARN

    $cd /app/hadoop/hadoop-2.2.0/sbin 
    $./start-yarn.sh

    这里写图片描写叙述

    2.2.5 验证YARN启动

    此时在hadoop1上执行的进程有:NameNode、SecondaryNameNode、DataNode、NodeManager和ResourceManager
    这里写图片描写叙述

    hadoop2和hadoop3上面执行的进程有:NameNode、DataNode和NodeManager
    这里写图片描写叙述

    这里写图片描写叙述

    3 问题解决

    3.1 CentOS 64bit安装Hadoop2.2.0中出现文件编译位数异常

    在安装hadoop2.2.0过程中出现例如以下异常:Unable to load native-hadoop library for your platform… using builtin-java classes where applicable
    这里写图片描写叙述

    通过分析是因为lib/native文件夹中有些文件是在32位编译,无法适应CentOS 64位环境造成
    这里写图片描写叙述

    有两种办法解决:

    • 又一次编译hadoop,然后又一次部署
    • 临时办法是改动配置,忽略有问题的文件

    这里写图片描写叙述

    3.2 编译Hadoop2.2.0出现代码异常

    眼下的2.2.0 的Source Code 压缩包解压出来的code有个bug 须要patch后才干编译。否则编译hadoop-auth 会提示以下错误:

    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:testCompile (default-testCompile) on project hadoop-auth: Compilation failure: Compilation failure:
    [ERROR] /home/hadoop/Downloads/release-2.2.0/hadoop-common-project/hadoop-auth/src/test/java/org/apache/hadoop/security/authentication/client/AuthenticatorTestCase.java:[88,11] error: cannot access AbstractLifeCycle
    [ERROR] class file for org.mortbay.component.AbstractLifeCycle not found
    [ERROR] /home/hadoop/Downloads/release-2.2.0/hadoop-common-project/hadoop-auth/src/test/java/org/apache/hadoop/security/authentication/client/AuthenticatorTestCase.java:[96,29] error: cannot access LifeCycle
    [ERROR] class file for org.mortbay.component.LifeCycle not found

    这里写图片描写叙述

    直接改动hadoop-common-project/hadoop-auth/pom.xml。事实上就是少了一个包。增加一个dependency:

    <dependency>
        <groupId>org.mortbay.jetty</groupId>
        <artifactId>jetty-util</artifactId>
        <scope>test</scope>
    </dependency>

    这里写图片描写叙述

    这里写图片描写叙述

    3.3 安装Hadoop2.2.0出现不能找到/etc/hadoop文件夹异常

    在安装过程中启动HDFS出现例如以下错误:

    2015-01-14 22:55:16,076 WARN  [main] util.NativeCodeLoader (NativeCodeLoader.java:<clinit>(62)) - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable]
    Error: Cannot find configuration directory: /etc/hadoop
    Error: Cannot find configuration directory: /etc/hadoop

    这里写图片描写叙述

    127.0.0.1 localhost
    改为
    192.168.0.61 localhost
    这里写图片描写叙述

    重新启动机器就可以

  • 相关阅读:
    找工作时写过的部分代码
    python编码格式
    dataframe删掉某列
    结巴分词出现AttributeError: 'float' object has no attribute 'decode'错误
    python转换图片格式
    感受野
    swift3 xib自定义view
    iOS 弹出键盘,输入框上移问题
    支付宝问题
    XCode6.0的iOS免证书真机测试方法(MAC及黑苹果均有效)
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7399161.html
Copyright © 2011-2022 走看看