⑴ hadoop 2.8.2 怎麼編譯
在不使用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
/
⑵ 為什麼要編譯 hadoop 源碼 怎麼在eclipse里寫hadoop程序啊~ 上不了外網,hadoop源碼編譯不了,該怎麼
1:編譯了hadoop,可以方便的查看某個函數的實現。如果不編譯就只是自己去翻源代碼了。更重要的是如果你編譯了hadoop,你可以根據自己的需要改動hadoop的某些實現機制。(hadoop開源的好處).
2:編程hadoop程序是不需要編譯hadoop源碼的。你可以參看網上hadoop安裝教程。
關於hadoop編程,歡迎訪問我的博客:http://blog.csdn.net/jackydai987
⑶ Hadoop下怎麼編譯C++程序呢必須寫makefile嗎能給個簡單的教程嗎
http://www.hadoopor.com/
可以上這個論壇看看,不錯的
makefile沒有必須寫的,它帶來的好處是「自動化編譯」,一旦寫好,一個make命令,整個工程自動編譯,極大地提高軟體開發的效率。
⑷ 編譯hadoop2.2是maven怎麼配置的
如果你下載的是hadoop發行包,不需要的。如採用mavan管理的項目一般在項目的根目錄下都有一個pom.xml文件,如果沒有這個文件一般就不是用maven來管理的。果你下載了只是hadoop源碼,而且mavan源碼是用maven管理的需要用maven編譯。
⑸ 你好,我編譯hadoop2.4源碼,成功之後導入eclipse中,但是怎麼還是有報錯,缺少包這類的問題呢
你把hadoop安裝目錄下的各個share目錄下的lib下的jar包導入項目,那些是hadoop依賴的jar包
⑹ 為什麼要編譯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...
⑺ hadoop源碼修改了,編譯成功後,將編譯後的hadoop文件直接拿來搭建么,還是需要經過什麼處理呢
把你編譯後的hadoop源碼丟到原來的hadoop集群環境中去 即覆蓋hadoop安裝目錄下的原hadoop-core-xxx.jar 同樣的所有節點都需要更新 然後重啟集群
⑻ 如何在CentOS6.5下編譯64位的Hadoop2.x
一、預先安裝必要軟體
1、需要的軟體:java, svn, autoconf, automake, libtool, ncurses-devel, openssl-devel, gcc, lzo-devel, zlib-devel, znt, maven, protobuf, cmake
檢測系統中是否已安裝了某一軟體命令:rpm -qa|grep 軟體名,如檢測系統中是否安裝了svn:
$ rpm -qa|grep svn
2、如果已安裝,則跳過,如果沒有安裝,用命令:yum install svn進行安裝,如:
$ yum install svn
如果yum命令安裝失敗(找不到相應的包),則需手動下載相應的軟體包進行安裝,比如maven, protobuf這兩個個軟體;
二、安裝maven
1、軟體包:apache-maven-3.0.5-bin.tar.gz
不要使用最新的Maven3.1.1,與Maven3.0.x存在兼容性問題,所以老是出現java.lang.NoClassDefFoundError: org/sonatype/aether/graph/DependencyFilter之類的錯誤。選擇3.0.5版本:apache-maven-3.0.5-bin.tar.gz
將apache-maven-3.0.5-bin.tar.gz移動到/usr目錄(軟體包所在目錄):
# mv ./apache-maven-3.0.5-bin.tar.gz /usr
進入/usr目錄,解壓(/usr目錄):
# tar –zxvf apache-maven-3.0.5-bin.tar.gz ./
刪除解壓後的壓縮包(/usr目錄):
# rm –rf apache-maven-3.0.5-bin.tar.gz
將/usr / apache-maven-3.0.5/bin加到環境變數中
# vi /etc/profile
在PATH行的最後加上「:/usr/apache-maven-3.0.5/bin」
2、使配置生效:
# source /etc/profile
驗證是否安裝成功:
# mvn –version
三、安裝protobuf
1、軟體包:protobuf-2.5.0.tar.gz
將protobuf-2.5.0.tar.gz移動到/usr目錄(軟體包所在目錄):
# mv ./ protobuf-2.5.0.tar.gz /usr
進入/usr目錄,解壓(/usr目錄):
# tar –zxvf protobuf-2.5.0.tar.gz ./
刪除解壓後的壓縮包(/usr目錄):
# rm –rf protobuf-2.5.0.tar.gz
進入/usr/protobuf-2.5.0目錄:
# cd /usr/protobuf-2.5.0
2、依次執行下列命令:
# ./configure
# make
# make check
# make install
檢測是否安裝成功:
# protoc --version
四、下載hadoop-2.2.0源碼並編譯
在/usr目錄進行
用svn下載hadoop-2.2.0源碼,命令:
$ svn checkout 'http://svn.apache.org/repos/asf/hadoop/common/tags/release-2.2.0'
源碼下載完成後,在/usr目錄下會有一個release-2.2.0目錄,進入該目錄:
$ cd /usr/release-2.2.0
$ ls –la
編譯源碼:
$ mvn package -Pdist,native -DskipTests –Dtar --不生成文檔
$ mvn package -Pdist,native,docs,src -DskipTests –Dtar --生成文檔,需要安裝findbugs,並設置FINDBUGS_HOME環境變數
編譯的時間比較久,編譯過程中會聯網下載所需要的包,機子沒聯網是不會成功編譯的。
編譯結束,最後列印的信息如下,每一項均是『SUCCESS』,則編譯成功:
編譯好的代碼包在/usr/release-2.2.0/hadoop-dist/target目錄下:
$ cd /usr/release-2.2.0/hadoop-dist/target
$ ls –la
因為是在64位系統下編譯的,所以編譯出來的代碼包是64位版本的;可以直接將/usr/release-2.2.0/hadoop-dist/target目錄下的hadoop-2.2.0或者hadoop-2.2.0.tar.gz拷貝到其他linux64位平台進行搭建hadoop集群。
說明:
1、 機器得連網,如果沒聯網找可以聯網的機器下載,但是編譯時還是要下載一些東西,所以,實在不行。最好找相同平台(可以是虛擬機)能上網的機器做下面工作,弄好了再把編譯好的代碼包拷回來。
2、 命令操作中,『#』開頭的是在root用戶進行,『$』開頭的是在普通用戶下進行
⑼ 如何在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 /
結束!