hadoop源碼編譯
『壹』 hadoop源碼修改了,編譯成功後,將編譯後的hadoop文件直接拿來搭建么,還是需要經過什麼處理呢
把你編譯後的hadoop源碼丟到原來的hadoop集群環境中去 即覆蓋hadoop安裝目錄下的原hadoop-core-xxx.jar 同樣的所有節點都需要更新 然後重啟集群
『貳』 編譯hadoop-0.23.9-src.tar.gz完成後,其他文件完整,就是沒有src文件夾,怎麼回事不吝賜教
不應吧,應該是編譯之前就沒有吧
『叄』 window下怎麼編譯hadoop的源碼
a) 進入windows命令行模式,進入到D:\soft\hadoop-2.6.4-src\hadoop-maven-plugins目錄,執行"mvn install"命令,如果命令行界面提示:build success"時表示成功:
b) 進入到hadoop-2.5.2-src 目錄,執行"mvn eclipse:eclipse -DskipTests"命令,如果出現"BUILD SUCCESS"說明hadoop源碼編譯成功。
c) 打開eclipse開發工具,將D:\soft\hadoop-2.6.4-src導入到workspace中,就可以查看源碼。
『肆』 如何在hadoop-2.6.0上編譯運行自己編寫的java代碼
在不使用eclipse情況使java程序在hadoop 2.2中運行的完整過程。整個過程中其實分為java程序的編譯,生成jar包,運行測試。
這三個步驟運用的命令都比較簡單,主要的還是如何找到hadoop 2.2提供給java程序用來編譯的jar包。具體可以查看:
HADOOP_HOME/share/hadoop/httpfs/tomcat/webapps/webhdfs/WEB-INF/lib目錄
下面會通過一個在hadoop中創建一個目錄的JAVA例子來進行演示
具體代碼如下:
package com.wan.demo;
import java.io.IOException;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
public class HADemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
mkdir(args[0]);
}
public static void mkdir(String dir){
Configuration configuration=new Configuration();
FileSystem fs;
try {
fs = FileSystem.get(configuration);
fs.mkdirs(new Path(dir));
fs.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
把HADemo.java文件拷貝到linux環境中
配置HADOOP_HOME/bin到環境中,啟動集群,進入HADemo.java文件目錄中
注:下面的lib目錄裡面的文件由HADOOP_HOME/share/hadoop/httpfs/tomcat/webapps/ webhdfs/WEB-INF/lib目錄中獲取,下面做的目的是為了縮減命令長度
1.編譯java
# mkdir class
#Javac -classpath .:lib/hadoop-common-2.2.0.jar:lib/hadoop-annotations-2.2.0.jar -d class HADemo.java
2.生成jar包
#jar -cvf hademo.jar -C class/ .
added manifest
adding: com/(in = 0) (out= 0)(stored 0%)
adding: com/wan/(in = 0) (out= 0)(stored 0%)
adding: com/wan/demo/(in = 0) (out= 0)(stored 0%)
adding: com/wan/demo/HADemo.class(in = 844) (out= 520)(deflated 38%)
3.測試運行
#hadoop jar hademo.jar com.wan.demo.HADemo /test
檢測:
#hadoop fs -ls /
結束!
『伍』 linux下,如何在上不了外網的情況下編譯hadoop源碼作為一名學生,真是太愁苦了!!
1.首先確認,你的linux上有沒有安裝ant
2.確認你的 各種環境是否配置正確(不會的話去看hadoop開發指南)
我把我的build.xml發給你
<?xml version="1.0"?>
<!--build.xml - a simple Ant buildfile -->
<project name="Simple Buildfile" default="compile" basedir=".">
<!--Set up the env prefix for environment variable -->
<property environment="env"/>
<!-- The directory cotaining source code -->
<property name="src.dir" value="src" />
<!-- Temporary build directories -->
<property name="build.dir" value="build"/>
<property name="build.classes" value="${build.dir}/classes"/>
<property name="build.lib" value="${build.dir}/lib"/>
<property name="jar.name" value="howtouse.jar"/>
<!-- Hadoop path -->
<property name="hadoop.path" value="${env.HADOOP_HOME}"/>
<!-- Target to create the build directories prior to the -->
<!-- compile target -->
<target name="prepare">
<mkdir dir="${build.dir}"/>
<mkdir dir="${build.classes}"/>
<mkdir dir="${build.lib}"/>
</target>
<target name="clean" description="Removes all generated files.">
<delete dir="${build.dir}"/>
</target>
<target name="compile" depends="prepare" description="Compiles all source code.">
<javac srcdir="${src.dir}" destdir="${build.classes}" includeantruntime="false"
deprecation="false">
<classpath>
<pathelement location="${hadoop.path}/hadoop-core-0.20.203.0.jar"/>
<pathelement location="${hadoop.path}/hadoop-tools-0.20.203.0.jar"/>
<pathelement location="${hadoop.path}/hadoop-examples-0.20.203.0.jar"/>
<pathelement location="${hadoop.path}/lib/mockito-all-1.8.5.jar"/>
<pathelement location="${hadoop.path}/lib/junit-4.5.jar"/>
<pathelement location="${hadoop.path}/lib/commons-math-2.1.jar"/>
<pathelement location="${hadoop.path}/lib/commons-cli-1.2.jar"/>
<pathelement location="${hadoop.path}/contrib/datajoin/hadoop-datajoin-0.20.203.0.jar"/>
</classpath>
</javac>
</target>
<target name="jar" depends="compile" description="Generates jar in the dist directory.">
<!-- Exclude unit tests from the final Jar file -->
<jar jarfile="${jar.name}" basedir="${build.classes}" excludes="**/*Test.class"/>
</target>
<target name="all" depends="clean,jar" description="Cleans,compiles,then builds the Jar file."/>
</project>
確保以上條件後
1.將自己寫的java文件放到 /home/hadoop/ant/build/src 使用XFTP
2.在HDFS中新建一個文件目錄專門用來裝資源文件 hadoop fs -mkdir /user/src
3.將simple.txt測試文件放到HDFS中 hadoop fs -put/user/src
4.將/home/hadoop/ant/build/src下的java文件編譯打包成play.jar(名字由build.xml決定)
方法:編譯之前必須保證與build.xml同級目錄下 ant jar
5.hadoop單機模式運行的時候必須保證在lib目錄下
hadoop jar play.jar hadoop/MaxTemperature /user/src/simple.txt output
『陸』 為什麼要編譯 hadoop 源碼 怎麼在eclipse里寫hadoop程序啊~ 上不了外網,hadoop源碼編譯不了,該怎麼
1:編譯了hadoop,可以方便的查看某個函數的實現。如果不編譯就只是自己去翻源代碼了。更重要的是如果你編譯了hadoop,你可以根據自己的需要改動hadoop的某些實現機制。(hadoop開源的好處).
2:編程hadoop程序是不需要編譯hadoop源碼的。你可以參看網上hadoop安裝教程。
關於hadoop編程,歡迎訪問我的博客:http://blog.csdn.net/jackydai987
『柒』 為什麼要編譯apache hadoop2.2.0源代碼
hadoop是不需要編譯的,解壓就可以直接使用了,操作如下: tar –zxvf hadoop-2.2.0.tar.gz #解壓"hadoop-2.2.0.tar.gz"安裝包mv hadoop-2.2.0 /usr/local/hadoop #將"hadoop-2.2.0"移動到/usr/local目錄下chown –R hadoop:hadoop /usr/local/had...
『捌』 怎麼使用eclipse編譯hadoop源碼
使用eclipse編譯hadoop源碼
1,建立一個Hadoop源碼文件夾。
2、svn 檢出hadoop1.0.4的源碼。svn checkout http://svn.apache.org/repos/asf/hadoop/common/tags/release-1.0.4
注意:如果在ubuntu下直接上面語句報錯,可能需要執行下面的語句
sudo apt-get install autoconf
sudo apt-get install libtool
3、在檢出完成後的目錄下執行
ant eclipse.然後將源碼導入到eclipse中。
4、修改 release-1.0.4/src/contrib/gridmix/src/Java/org/apache/hadoop/mapred/gridmix/Gridmix.java
將兩處的 Enum<? extends T> 改成 Enum<?>
5、編譯器設置及編譯。
右擊工程名,Properties-->Builders-->New--->Ant Builder
New_Builder --> Edit: Name: hadoop-Builder.Main:Builderfile(builder.xml的位置):/home/nacey/workspace/source-workspace/hadoop-1.0.4;Targets—>Manual Build: jar
然後選擇菜單Project-->Build Project
在/home/nacey/workspace/source-workspace/hadoop-1.0.4/build文件夾下會生成三個開發 jar 包:
hadoop-client-1.0.4-SNAPSHOT.jar
hadoop-core-1.0.4-SNAPSHOT.jar
hadoop-minicluster-1.0.4-SNAPSHOT.jar
去掉"-SNAPSHOT"即可替換hadoop-1.0.4 下的同名 jar 包.
注意如果要在集群中使用自己編譯的jar,則需要替換集群中的所有機器。不然會出現版本不匹配。
『玖』 如何用ant編譯hadoop-1.2.1源碼
1、安裝ant 2、安裝m4 3、安裝autoconf 4、安裝automake 5、安裝libtool 6、安裝ant vi /etc/profile export ANT_HOME=%ANT% export PATH=$JAVA_HOME/bin:$ANT_HOME/bin:$PATH source /etc/profile 7、安裝eclipse 8、解壓Hadoop文件,並修改配置文件 取消ivy-download %hadoop%/src/contrib/build-contrib.xml 添加hadoop的version和eclipse的eclipse.home屬性 <!-- hadoop版本、eclipse安裝路徑 --> <property name="version"value="1.1.2"/> <property name="eclipse.home"location="%eclipse%"/> 編輯%HADOOP_HOME%/build.xml 修改hadoop版本號 取消ivy-download %hadoop%/src/contrib/eclipse-plugin/build.xml 取消ivy-download: 添加將要打包到plugin中的第三方jar包列表 <!-- 自定義的修改內容:begin --> <!-- < file="${hadoop.root}/build/hadoop-core-${version}.jar" tofile="${build.dir}/lib/hadoop-core.jar"verbose="true"/> < file="${hadoop.root}/build/ivy/lib/Hadoop/common/commons-cli-${commons-cli.version}.jar" todir="${build.dir}/lib"verbose="true"/> --> < file="${hadoop.root}/hadoop-core-${version}.jar"tofile="${build.dir}/lib/hadoop-core.jar"verbose="true"/> < file="${hadoop.root}/lib/commons-cli-1.2.jar" todir="${build.dir}/lib"verbose="true"/> < file="${hadoop.root}/lib/commons-configuration-1.6.jar" todir="${build.dir}/lib"verbose="true"/> < file="${hadoop.root}/lib/commons-httpclient-3.0.1.jar" todir="${build.dir}/lib"verbose="true"/> < file="${hadoop.root}/lib/commons-lang-2.4.jar" todir="${build.dir}/lib"verbose="true"/> < file="${hadoop.root}/lib/jackson-core-asl-1.8.8.jar" todir="${build.dir}/lib"verbose="true"/> < file="${hadoop.root}/lib/jackson-mapper-asl-1.8.8.jar" todir="${build.dir}/lib"verbose="true"/> <!-- 自定義的修改內容:end --> 修改%hadoop%/src/contrib/eclipse-plugin/META-INF/MANIFEST.MF 修改${HADOOP_HOME}/src/contrib/eclipse-plugin/META-INF/MANIFEST.MF的Bundle-ClassPath: Bundle-ClassPath: classes/, lib/hadoop-core.jar, lib/commons-cli-1.2.jar, lib/commons-configuration-1.6.jar, lib/commons-httpclient-3.0.1.jar, lib/commons-lang-2.4.jar, lib/jackson-core-asl-1.8.8.jar, lib/jackson-mapper-asl-1.8.8.jar 9、執行ANT (編譯源代碼) 進入到%hadoop%/執行ant compile 10、進入到%hadoop%/build/contrib/eclipse-plugin/執行 ant jar (生成elipse插件)