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. 全文检索,LucunceSolr、Nutch

4、编译Hadoop 2.x 源代码

4.1、环境:

1)Linux 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

[[email protected] native]# pwd

/opt/hadoop-2.2.0-src/hadoop-dist/target/hadoop-2.2.0/lib/native

[[email protected] 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就可以,參考:

http://www.blogjava.net/Jay2009/archive/2009/04/23/267108.html

http://www.cnblogs.com/zhoulf/archive/2013/02/04/2891608.html

假设javac命令无法识别

[[email protected] ~]# 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,安装完毕之后

[[email protected] ~]# 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)

[[email protected] ~]# javac -version

javac 1.7.0_71

[[email protected] ~]#

注意

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.

參看

http://www.cnblogs.com/RandyS/p/3909717.html

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

第一次编译结果:

第二次编译结果:

时间: 2024-10-13 12:15:53

Hadoop2.x介绍与源代码编译的相关文章

Win7 32bit下一个hadoop2.5.1源代码编译平台的搭建各种错误遇到

从小白在安装hadoop困难和错误时遇到说起,同时,我们也希望能得到上帝的指示. 首先hadoop更新速度非常快,最新的是hadoop2.5.1,因此就介绍下在安装2.5.1时遇到的各种困难. 假设直接准备在系统上安装binary版本号的,能够參考http://www.cnblogs.com/kinglau/p/3270160.html. 在下载好hadoop文件时.一定要注意下载的hadoop版本号是否与本机的系统版本号相相应,如32bit的还是64bit的,否则在运行start-all.sh

Ubuntu通过源代码编译安装Octave 4.0

本教程/笔记,意在指导在Ubuntu及其它Linux系统上怎样通过源代码安装Octave. Octave简单介绍 Octave是GNU旗下取代matlab的数学工具软件,语法与matlab高度兼容.而且支持一些独有的更清晰更符合Linux社区习惯的语法. 尽管在一些详细工具包和部分特性.效率上不如matlab.可是对于一般用户,它是matlab的一个有效的合法的免费的替代工具. 3.8版本号之前官方没有GUI界面,这无疑是它在普及方面的一个重大阻碍,让想使用GUI,必须下载第三方的工具(如qto

hadoop2.5发布:最新编译 32位、64位安装、源码包、API以及新特性

hadoop2.5发布:最新编译 32位.64位安装.源码包.API以及新特性 http://www.aboutyun.com/thread-8751-1-1.html (出处: about云开发) 问题导读:1.如何获取Hadoop安装包?2.编译Hadoop过程中,需要注意哪些问题?3.如何寻找API?4.如何获取Hadoop源码? 上述问题有的在本文,有的则在本文链接,感兴趣,可以找找答案 2014年08月06日 Hadoop2.5发布 官网下载地址 对Hadoop2.5进行了编译,编译的

MYSQL 源代码 编译原理 AST和解析树 代码语法解析

MYSQL 源代码 编译原理 AST和解析树 代码语法解析 http://blog.csdn.net/wfp458113181wfp/article/details/17082355 使用AST树 分类:             antlr              2013-12-02 22:39     255人阅读     评论(0)     收藏     举报 目录(?)[+] 第五章使用AST树中间结果来计算表达式值 创建ASTS 第五章.使用AST树中间结果来计算表达式值 现在我们已

Apache Kafka-0.8.1.1源代码编译

作者:过往记忆 | 新浪微博:左手牵右手TEL | 能够转载, 但必须以超链接形式标明文章原始出处和作者信息及版权声明博客地址:http://www.iteblog.com/文章标题:<Apache Kafka-0.8.1.1源代码编译>本文链接:http://www.iteblog.com/archives/1044Hadoop.Hive.Hbase.Flume等QQ交流群:138615359(已满),请增加新群:149892483本博客的微信公共帐号为:iteblog_hadoop.欢迎大

Java前端编译:Java源代码编译成Class文件的过程

Java前端编译:Java源代码编译成Class文件的过程 在上篇文章<Java三种编译方式:前端编译 JIT编译 AOT编译>中了解到了它们各有什么优点和缺点,以及前端编译+JIT编译方式的运作过程. 下面我们详细了解Java前端编译:Java源代码编译成Class文件的过程:我们从官方JDK提供的前端编译器javac入手,用javac编译一些测试程序,调试跟踪javac源码,看看javac整个编译过程是如何实现的. 1.javac编译器 1-1.javac源码与调试 javac编译器是官方

linux下apache+mysql+php开发环境纯源代码编译搭建

linux下apache+mysql+php开发环境纯源代码编译搭建 记录一下我在fedora core 1下通过源代码编译出来的apache+mysql+php开发环境的全部过程 通常安装一台服务器当然使用rpm是最方便的,不需要考虑太多配置的问题,就可以轻松获得需要的环境了.不过rpm包互相关联的问题也不是这么容易解决. apache,mysql,php这三个应用从源代码编译安装还是比较简单的,配置参数不算复杂,而且没有太多的依赖关系,从源码编译出来的系统也比较稳定一些,方便未来打补丁和升级

C++ Jsoncpp源代码编译与解析Json

1.Json 数据表示方式介绍 这个可以看之前的一个文章里面有说明:Java解析(读取)Json数据 2.C++ Jsoncpp 2.1 Jsoncpp介绍 (1)JsonCpp主要包含三种类型的class:Value Reader Writer; Json::Value 是jsoncpp 中最基本.最重要的类,用于表示各种类型的对象,jsoncpp 支持的对象类型可见 Json::ValueType 枚举值. Json::Reader 是用于读取的,说的确切点,是用于将字符串转换为 Json:

源代码编译MYSQL5.6 环境下的MHA+KEEPALIVED的安装和维护

前    言 摘   要 MHA 是当 master 出现故障,挑选一个 slave 作为新的 master 并构建成新的 主从架构的管理工具.从 master 出现故障到构建成新的主从架构时间是 10-30 秒.在 master 出现故障时可能会出现 slave 同步的数据不一致的现象,此工具 可以自动应用差异的中继日志到其他 slave 上保证数据的一致性. 一.Mha 优点 1.M aster crash 时可以快速的进行故障切换. 9-12 秒内可以检测到 master 故障, 7-10