zoukankan      html  css  js  c++  java
  • Hadoop2.x介绍与源代码编译

    1、Hadoop 项目的四大模块
    1. Hadoop Common: The common utilities that support the other Hadoop modules.
    2. Hadoop Distributed File System (HDFS™): A distributed file system that provides high-throughput access to application data.
    3. Hadoop YARN: A framework for job scheduling and cluster resource management.
    4. Hadoop MapReduce: A YARN-based system for parallel processing of large data sets.
    2、YARN的操作系统-- Hortonworks Hadoop 商业版本号的)

    1. 部署在YARN的应用,分配资源
    2. 管理资源
    3. JOB/APPLICATION 调度

    3、技能

    1. 云计算Hadoop 2.x
    2. 服务总线SOA/OSBDubble
    3. 全文检索,LucunceSolrNutch

    4编译Hadoop 2.x 源代码
    4.1、环境:

    1Linux 64 操作系统。CentOS 6.4 版本号。VMWare 搭建的虚拟机

    2虚拟机能够联网

    4.2、官方编译说明:

    解压命令:tar -zxvf hadoop-2.2.0-src.tar.gz 

    之后进入到解压目录下,能够查看BUILDING.txt文件。 more BUILDING.txt 。向下翻页是空格键,当中内容例如以下

    Requirements:

    * Unix System

    * JDK 1.6+

    * Maven 3.0 or later

    * Findbugs 1.3.9 (if running findbugs)

    * ProtocolBuffer 2.5.0

    * CMake 2.6 or newer (if compiling native code)

    * Internet connection for first build (to fetch all Maven and Hadoop dependencies)

    ----------------------------------------------------------------------------------

    Maven main modules:

      hadoop (Main Hadoop project)

             - hadoop-project (Parent POM for all Hadoop Maven modules. )

                                        (All plugins & dependencies versions are defined here.)

             - hadoop-project-dist (Parent POM for modules that generate distributions.)

             - hadoop-annotations (Generates the Hadoop doclet used to generated the Java

    docs)

             - hadoop-assemblies (Maven assemblies used by the different modules)

             - hadoop-common-project (Hadoop Common)

             - hadoop-hdfs-project (Hadoop HDFS)

             - hadoop-mapreduce-project (Hadoop MapReduce)

             - hadoop-tools (Hadoop tools like Streaming, Distcp, etc.)

             - hadoop-dist (Hadoop distribution assembler)

    ----------------------------------------------------------------------------------

    在编译完毕之后,能够查看Hadoop的版本号信息

    libhadoop.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, not stripped 
    [root@centos native]# pwd 
    /opt/hadoop-2.2.0-src/hadoop-dist/target/hadoop-2.2.0/lib/native 
    [root@centos native]#

    4.3、编译前准备之安装依赖包

    安装linux系统包

    • yum install autoconf automake libtool cmake
    • yum install ncurses-devel
    • yum install openssl-devel
    • yum install lzo-devel zlib-devel gcc gcc-c++

    安装Maven

    • 下载:apache-maven-3.0.5-bin.tar.gz
    • 解压:tar -zxvf apache-maven-3.0.5-bin.tar.gz
    • 环境变量设置,打开/etc/profile文件,加入
      • export MAVEN_HOME=/opt/apache-maven-3.0.5
      • export PATH=$PATH:$MAVEN_HOME/bin
    • 运行命令使之生效:source /etc/profile或者./etc/profile
    • 验证:mvn -v 
    安装protobuf
    • 解压:tar -zxvf protobuf-2.5.0.tar.gz 
    • 进入安装文件夹,进行配置,运行命令。./configure
    • 安装命令:make & make check & make install
    • 验证:protoc --version

    安装findbugs
    • 解压:tar -zxvf findbugs.tar.gz 
    • 环境变量设置:
      • export export FINDBUGS_HOME=/opt/findbugs-3.0.0
      • export PATH=$PATH:$FINDBUGS_HOME/bin
    • 验证命令:findbugs -version
    假设出现信息:java lang unsupportedclassversionerror unsupported major minor version 51.0。那么是由于你採用的jdk为open jdk,直接将其卸载,安装Sun公司原装的JDK就可以,參考:

    假设javac命令无法识别
    [root@centos ~]# javac 
    Error: could not find libjava.so 
    Error: could not find Java 2 Runtime Environment.
    可是当我这样执行的时候:/usr/lib/jvm/jdk1.7.0_71/bin/javac -version,一切正常,说明可能是旧版jre影响,那么删除open-jre,安装Sun公司Jre
    下载了rpm包之后,rpm -ivh jre-7u71-linux-x64.rpm,安装完毕之后
    [root@centos ~]# java -version 
    java version "1.7.0_71" 
    Java(TM) SE Runtime Environment (build 1.7.0_71-b14) 
    Java HotSpot(TM) 64-Bit Server VM (build 24.71-b01, mixed mode) 
    [root@centos ~]# javac -version 
    javac 1.7.0_71 
    [root@centos ~]#

    注意
    Hadoop是Java写的。他无法使用Linux预安装的OpenJDK,因此安装hadoop前须要先安装JDK(1.6以上)
    另外Hadoop2.2.0存在一个bug
    须要改动/opt/hadoop-2.2.0-src/hadoop-common-project/hadoop-auth/pom.xml中的内容(加入黑体部分):
        <dependency>
          <groupId>org.mortbay.jetty</groupId>
       <artifactId>jetty-util</artifactId>
          <scope>test</scope>
        </dependency>
     <dependency>
          <groupId>org.mortbay.jetty</groupId>
       <artifactId>jetty</artifactId>
          <scope>test</scope>
        </dependency>
    4.4、怎样编译

    进入到Hadoop源代码文件夹下/opt/hadoop-2.2.0-src。执行红色字体[可选项]:

    Building distributions:

    Create binary distribution without native code and without documentation:

      $ mvn package -Pdist -DskipTests -Dtar

    Create binary distribution with native code and with documentation:

      $ mvn package -Pdist,native,docs -DskipTests -Dtar

    Create source distribution:

      $ mvn package -Psrc -DskipTests

    Create source and binary distributions with native code and documentation:

      $ mvn -e -X package -Pdist,native[,docs,src] -DskipTests -Dtar

    Create a local staging version of the website (in /tmp/hadoop-site)

      $ mvn clean site; mvn site:stage -DstagingDirectory=/tmp/hadoop-site

    4.5、编译之前,可能须要配置MAVEN国内镜像配置

    1. 进入安装文件夹 /opt/modules/apache-maven-3.0.5/conf,编辑 settings.xml 文件

    改动<mirrors>内容:

    <mirror>  

    <id>nexus-osc</id>  

    <mirrorOf>*</mirrorOf>  

    <name>Nexus osc</name>  

    <url>http://maven.oschina.net/content/groups/public/</url>  

    </mirror> 

    改动<profiles>内容:

    <profile>  

    <id>jdk-1.6</id>  

    <activation>  

    <jdk>1.6</jdk>  

    </activation>  

    <repositories>  

    <repository>  

    <id>nexus</id>  

    <name>local private nexus</name>  

    <url>http://maven.oschina.net/content/groups/public/</url>  

    <releases>  

    <enabled>true</enabled>  

    </releases>  

    <snapshots>  

    <enabled>false</enabled>  

    </snapshots>  

    </repository>  

    </repositories> 

    <pluginRepositories>  

    <pluginRepository>  

    <id>nexus</id>  

    <name>local private nexus</name>  

    <url>http://maven.oschina.net/content/groups/public/</url>  

    <releases>  

    <enabled>true</enabled>  

    </releases>  

    <snapshots>  

    <enabled>false</enabled>  

    </snapshots>  

    </pluginRepository>  

    </pluginRepositories>  

    </profile>

    1. 复制配置

            将该配置文件拷贝到用户文件夹,使得每次对maven创建时,都採用该配置

    查看用户文件夹/home/hadoop】是否存在【.m2】文件夹,如没有。则创建

    $ cd /home/hadoop

    $ mkdir .m2

    拷贝文件

    $ cp /opt/modules/apache-maven-3.0.5/conf/settings.xml ~/.m2/

    4.6、配置DNS 

    改动: vi /etc/resolv.conf      

    nameserver 8.8.8.8

    nameserver 8.8.4.4

    4.7、将Hadoop Project 导入到Eclipse

    Importing projects to eclipse

    When you import the project to eclipse, install hadoop-maven-plugins at first.

      $ cd hadoop-maven-plugins

      $ mvn install

    Then, generate eclipse project files.

      $ mvn eclipse:eclipse -DskipTests

    At last, import to eclipse by specifying the root directory of the project via

    [File] > [Import] > [Existing Projects into Workspace].


    注意:

    编译过程中假设出现不论什么有关jdk或者jre的问题:JAVA_HOME environment variable is not set.

    參看
    到 /etc/profile 最后,然后 . /etc/profile或者source /etc/profile使设置生效。


    假设出现bash: javac: command not found
    那么运行
    yum install java-devel就可以,这是由于:http://stackoverflow.com/questions/5407703/javac-command-not-found

    编译过程中碰到的其它问题:http://blog.csdn.net/xichenguan/article/details/17636905

    出现错误:Failed to execute goal org.apache.maven.plugins:maven-antrun-plugin:1.6:run (site) on project hadoop-hdfs: An Ant BuildException has occured: input file /opt/hadoop-2.2.0-src/hadoop-hdfs-project/hadoop-hdfs/target/findbugsXml.xml does not exist
    解决的方法:
    cd ~/hadoop-2.2.0-src/ mvn clean package -Pdist,native,docs -DskipTests -Dtar //编译中途出错修正后可从指定点開始继续编译,改动最后一个參数就可以。

    如出现hadoop-hdfs/target/findbugsXml.xml does not exist则从该命令删除docs參数再执行mvn package -Pdist,native -DskipTests -Dtar -rf :hadoop-pipes


    build成功之后。进入到/opt/hadoop-2.2.0-src/hadoop-dist/target路径下查看hadoop-2.2.0.tar.gz就是编译完毕之后的tar包

    出现错误:Could not find goal 'protoc' in plugin org.apache.hadoop:hadoop-maven-plugins:2.2.0 among available 
    解决的方法:在/etc/profile中增加例如以下内容,之后source /etc/profile
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/protobuf/lib
    export PATH=$PATH:/usr/local/bin
    通常建议安装到/usr/local文件夹下,运行configure时,指定--prefix=/usr/local/protobuf就可以,假设出现错误,那么make clean一下,之后再进行操作

    我的/etc/profile文件内容:
    export MAVEN_HOME=/opt/apache-maven-3.0.5
    export PATH=$PATH:$MAVEN_HOME/bin
    export JAVA_HOME=/usr/lib/jvm/jdk1.7.0_71/
    export JRE_HOME=/usr/lib/jvm/jdk1.7.0_71/jre
    export ANT_HOME=/usr/lib/jvm/apache-ant/
    export CLASSPATH=.:$JRE_HOME/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin:$ANT_HOME/bin
    export FINDBUGS_HOME=/opt/findbugs-3.0.0
    export PATH=$PATH:$FINDBUGS_HOME/bin:/opt/protoc/bin
    export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/protoc/lib
    第一次编译结果:

    第二次编译结果:


  • 相关阅读:
    Oracle 获取本周、本月、本季、本年的第一天和最后一天(转载)
    easyui tabs页签显示在底部属性
    java mybatis XML文件中大于号小于号转义(转载)
    原生JS日历 + JS格式化时间格式
    ajax之async属性
    Easyui 行编辑
    css中实现显示和隐藏(转)
    layer弹出层 获取index
    js中关于json常用的内容、js将数字保留两位小数
    发布项目到github上web服务器来运行
  • 原文地址:https://www.cnblogs.com/llguanli/p/6753629.html
Copyright © 2011-2022 走看看