64ビットCentOSでHadoop2.2.0をコンパイルします



Compile Hadoop 2 2 0 64 Bit Centos



起動後に、Hadoopプリコンパイル済みバイナリhadoop-2.2.0.tar.gzをダウンロードしました。常に次の警告が表示されます。

WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

apacheの公式ウェブサイトがネイティブライブラリ内にバイナリパッケージを提供しているためです。 32で、ピットはああ落ちました、今、ああ、32のサーバーがあります。



$ file $HADOOP_PREFIX/lib/native/libhadoop.so.1.0.0 libhadoop.so.1.0.0: ELF 32-bit LSB shared object, Intel 80386, version 1 (SYSV), dynamically linked, BuildID[sha1]=0x9eb1d49b05f67d38454e42b216e053a27ae8bac9, not stripped

Hadoop 2.2.0別の64ビットLinuxでコンパイルされたソースコードをダウンロードし、32ビット64ビットネイティブライブラリをネイティブライブラリに置き換える必要があります。

1. Hadoop2.2.0ソースコードパッケージをダウンロードして抽出します

$ wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.2.0/hadoop-2.2.0-src.tar.gz $ tar zxf hadoop-2.2.0-src.tar.gz

2.次のソフトウェアをインストールします

$ sudo yum install cmake lzo-devel zlib-devel gcc autoconf automake libtool ncurses-devel openssl-deve

3.Mavenのインストール

Maven3.1.4をインストールしました



$ wget http://mirror.esocc.com/apache/maven/maven-3/3.1.4/binaries/apache-maven-3.1.4-bin.tar.gz $ sudo tar zxf apache-maven-3.1.4-bin.tar.gz -C /opt $ sudo vim /etc/profile export MAVEN_HOME=/opt/apache-maven-3.1.4 export PATH=$PATH:$MAVEN_HOME/bin

ログオフして再度ログオンし、環境変数を有効にします。

4.インストールAnt

$ wget http://apache.dataguru.cn//ant/binaries/apache-ant-1.9.4-bin.tar.gz $ sudo tar zxf apache-ant-1.9.4-bin.tar.gz -C /opt $ sudo vim /etc/profile export ANT_HOME=/opt/apache-ant-1.9.4 export PATH=$PATH:$ANT_HOME/bin

5.インストールFindbugs

$ wget http://prdownloads.sourceforge.net/findbugs/findbugs-2.0.3.tar.gz?download $ sudo tar zxf findbugs-2.0.3.tar.gz -C /opt $ sudo vim /etc/profile export FINDBUGS_HOME=/opt/findbugs-2.0.3 export PATH=$PATH:$FINDBUGS_HOME/bin

6.インストールprotobuf

コンパイラーHadoop2.2.0、コンパイラーにはprotobufprotocが必要です。

上記のprotobuf2.5.0が必要なものもありますが、yum Laneは2.3であり、古すぎます。



したがって、ソースコードをダウンロードし、コンパイルしてインストールします。

$ wget https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz $ tar zxf protobuf-2.5.0.tar.gz $ cd protobuf-2.5.0 $ ./configure $ make $ sudo make install

7.パッチを作成するためのHadoopソースコード

圧縮されたコードからの最新のHadoop2.2.0ソースコード抽出には、バグ機能がコンパイルされた必要なパッチがあります。それ以外の場合、hadoop-authをコンパイルすると、次のエラーが表示されます。

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.5.1:testCompile (default-testCompile) on project hadoop-auth: Compilation failure: Compilation failure: [ERROR] /home/chuan/trunk/hadoop-common-project/hadoop-auth/src/test/java/org/apache/hadoop/security/authentication/client/AuthenticatorTestCase.java:[84,13] cannot access org.mortbay.component.AbstractLifeCycle [ERROR] class file for org.mortbay.component.AbstractLifeCycle not found

パッチ: https://issues.apache.org/jira/browse/HADOOP-10110

wget https://issues.apache.org/jira/secure/attachment/12614482/HADOOP-10110.patch patch -p0

8.コンパイルされたHadoop

cd hadoop-2.2.0-src mvn package -DskipTests -Pdist,native -Dtar

9.ネイティブライブラリ32を置き換えます

with hadoop-2.2.0-src/hadoop-dist/target/hadoop-2.2.0/lib/native Replace hadoop-2.2.0/lib/native

rm -rf ~/local/opt/hadoop-2.2.0/lib/native cp ./hadoop-dist/target/hadoop-2.2.0/lib/native ~/local/opt/hadoop-2.2.0/lib/

Hadoopクラスターを再起動します。警告情報コンソールは表示されなくなります。

10はUbuntuの問題の解決を開始できません

Ubuntuでは、それは警告ではありませんが、起動しません。間違っているからです。 in ./sbin/start-dfs.sh 55行目。

NAMENODES=$($HADOOP_PREFIX/bin/hdfs getconf -namenodes)

シェルでそのような個別を実行するコマンド、

./bin/hdfs getconf -namenodes OpenJDK 64-Bit Server VM warning: You have loaded library /home/soulmachine/local/opt/hadoop-2.2.0/lib/native/libhadoop.so which might have disabled stack guard. The VM will try to fix the stack guard now. It's highly recommended that you fix the library with 'execstack -c ', or link it with '-z noexecstack'. 14/02/14 13:14:50 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable localhost

最後の行のローカルホスト。有効なnamenodeです。しかし、先に多くの警告があるからです。このスクリプトはたくさんの文字列です。スペースで区切られ、すべての単語がnamenodeと見なされ、次の間違った破片になります。

根本原因、または32ビットのネイティブライブラリが原因です。

32ネイティブフォルダの削除を実行します。過去64のネイティブファイルをコンパイルしたフォルダーをコピーしてから

./bin/hdfs getconf -namenodes localhost

今回は右側!