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-11-03 03:43:49

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

Android介绍以及源码编译(一)

一. Android概况 1.1     简介 Android是一种基于Linux的自由及开放源代码的操作系统.主要用于移动设备,如智能手机.平板电脑.TV.穿戴设备,由Google公司和开放手机联盟领导及开发. Android操作系统最初由Andy Rubin开发,主要支持手机.2005年8月由Google收购注资Google以Apache开源许可证的授权方式,发布了Android的源代码. 第一部Android智能手机发布于2008年10月. 1.2     Android版本 Google

Android介绍以及源码编译---Ubuntu安装

二. Ubuntu安装和设置 2.1 原料 VMware Workstation 11 Ubuntu 14.04 x64位 iso镜像文件 Android4.1源码(Jelly Bean) 2.2  安装和设置 选择Ubuntu安装镜像:(Android2.3之后的版本,必须使用64位系统编译) 创建账户: 选择CPU以及核心数量(涉及后面的源码编译): 分配虚拟机内存,建议最低4GB,编译Android系统较耗内存: 硬盘空间分配至少40G以上.源码解压20G左右,编译完成后占用40G以上空间

Android介绍以及源码编译---Android源码下载

四. Android源码下载 4.1     安装repo 在home目录下建立bin文件夹 $ mkdir ~/bin $ PATH=~/bin:$PATH 安装并更改权限 $curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo $ chmod a+x ~/bin/repo 4.2     初始化repo 创建工作目录(存放源码) $ mkdir Android4.1 $ cd Android4.1

Android介绍以及源码编译---Ubuntu系统Android编译环境配置

三. Ubuntu系统Android编译环境配置 3.1     选择安装源: 系统安装完成后,进入系统时首先选择好软件更新源,后面所有的软件包安装都会从这个更新源中获取. 选择路径:System settings --> Software & Updates --> Ubuntu Software --> Download from --> Other 原则上使用距离你所在地区较近的服务器.例如:中国可以选择http://mirrors.163.com/ubuntu 为编

Android介绍以及源码编译--编译Android源码

一. 编译Android源码 5.1     初始化环境变量 1 $ source build/envsetup.sh 2 $ . build/envsetup.sh 3 $ lunch full-eng 5.2     编译Android系统 1 $ make –jN 其中N参数代表你计算机的线程参数,数字越大,编译速度越快,但是要看你计算机支持到什么地步. 我使用的是 $ make –j8 经过几天的编译,终于看见胜利的曙光:system.img成功生成! 5.3     运行模拟器 编译成

Hadoop2.x系列之源码编译

一.编译源码步骤演示详解 官网下载的hadoop包,执行hadoop命令时,会有警告信息,为去除此警告,需要重新编译hadoop相应版本的源码,替换hadoop安装包lib目录下的native(警告如下图所示) . 编译hadoop环境要求 1.必须在linux系统下编译 2.编译使用的JDK版本必须是1.6以上 3.编译需要使用Maven版本3.0以上(因为源码是由Maven管理的) 4.安装Findbugs插件工具,版本1.3.9 5.安装CMake编译工具,版本2.6或最新版本 6.安装z

Android介绍以及源码编译--常见编译错误

六. 常见编译错误 在新安装的Ubuntu系统下,第一次编译Android源码问题很多.以下都是在执行make命令后,编译过程中出现的问题. 原则是make遇到缺什么就安装什么,通过Google+ Baidu 搜索报错. 错误:/bin/bash: build/core/find-jdk-tools-jar.sh: Permission denied 解决:为了防止出现同样的权限问题,我将所有Android文件全部加上了权限,进入Android源码根目录,执行:   $sudo chmod 77

FastDFS源码学习(一)FastDFS介绍及源码编译安装

FastDFS是淘宝的余庆主导开发的一个分布式文件系统,采用C语言开发,性能较优.在淘宝网.京东商城.支付宝和某些网盘等系统均有使用,使用场景十分广泛. 下图来源:https://blog.csdn.net/kyriehe/article/details/52431495 目前这个系统的源码已在github上开源.编译FastDFS需要下载以下源码:FastDFS,下载地址:https://github.com/happyfish100/fastdfs libfastcommon,下载地址:ht

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时会报错.我就