Mac OSでHadoopを正常に起動した後、ネイティブhadoopライブラリを読み込めないことが表示されます



After Having Successfully Started Hadoop Under Mac Os



参照を解決する ApacheHadoop-ネイティブライブラリを追加します

まず環境についてお話させていただきますが、
システム:Mac os 10.14.6
Javaバージョン:1.8.0_231(8u231)
hadoopバージョン:2.7.1
Mavenバージョン:3.6.2
ターミナル:iTerm2
シェル:zsh



根本的な原因は、公式WebサイトからダウンロードしたhadoopコードのネイティブライブラリがMacOSのバージョンをターゲットにしていないことです。実際、これは公式ウェブサイトでも説明されています。リンクは➡️にあります ネイティブライブラリの説明ページ 、RHEL4 / Fedora、Ubuntu、Gentooの3つのブランチのみをサポートしていることを示しています。 Mac OS用のネイティブライブラリがないため、自分でコンパイルすることしかできません。

準備オーケー

必須:hadoop 2.7.1、java8、maven、homebrewをインストールしている
hadoop2.7.1に基づくと、java8は必須です。このバージョンのJavaよりも高いと、主に一部の元の参照ファイルが見つからないため、さまざまな問題が発生します。コンパイル時にMavenが使用されます(Mavenをインストールしていない場合は、をクリックしてください ここに )。自作は不可欠なパッケージマネージャーです(自作とは何かがわからない場合は、をクリックしてください ここに )。私はzshを使用しているので、エクスポートリンクはすべて〜/ .zshrcにあります。 bash(または他のシェル)を使用している場合は、対応する〜/ .bash_profile(または他のシェル)で変更してください。さらに、/ etc /プロファイルファイルを変更してグローバルに有効にすることもできますが、これは行いませんでした。デフォルトの操作は〜ディレクトリにあり、以下では繰り返されません。



ローカルライブラリのコンパイルを開始します

  • 依存関係protobufをインストールします
mkdir ~/protobuf cd ~/protobuf wget https://github.com/google/protobuf/releases/download/v2.5.0/protobuf-2.5.0.tar.bz2 tar xfvj protobuf-2.5.0.tar.bz2 protobuf-2.5.0/configure make or make check make install cd ~

インストールに手動コンパイル方式を使用する理由は、コンパイル時に使用するprotobufのバージョンが2.5.0である必要があるためです。現在、ワンクリックの自作でprotobuf-2.5.0をインストールする方法が見つかりません。
2.5.0バージョンのprotobufを使用する必要がある理由については、hadoopソースフォルダーに切り替えて使用することができますgrep 'protobuf.version' */pom.xmlコマンドで表示

  • cmake、zlib、snappyをインストールします
brew install cmake brew install zlib brew install snappy
  • クローンhadoopソースコード
git clone https://github.com/apache/hadoop.git cd hadoop

ネットワークの要因によっては、この手順の待ち時間が長くなる場合があります。または、hadoop-2.x.y-src.tar.gzファイルを直接ダウンロードして解凍することもできます。

  • Hadoopバージョン2.7.1に切り替えます
git checkout branch-2.7.1
  • Mavenでコンパイルする
mvn package -Pdist,native -DskipTests -Dtar

コンパイル中にMavenが壊れていて、hadoop-pipes関連エラーが表示された場合は、export OPENSSL_ROOT_DIR=$(brew --prefix openssl)このコードを実行し、コンパイルコマンドを再実行してください。mavenはコンパイルを続行します。

  • 新しくコンパイルされた依存関係ライブラリをインストールされたhadoopディレクトリにコピーします
mkdir -p $HADOOP_INSTALL/lib/native/osx cp -r hadoop-dist/target/hadoop-2.7.1/lib/native/* $HADOOP_INSTALL/lib/native/osx
  • ライブラリのディレクトリを環境変数に追加します~/.bash_profile / ~/.zshrcまたは$HADOOP_INSTALL/etc/hadoop/hadoop-env.sh In
export HADOOP_OPTS='$HADOOP_OPTS -Djava.library.path=$HADOOP_INSTALL/lib/native/osx'
  • インストール結果を表示する
hadoop checknative

問題がない場合、この時点でHadoopを再起動しても、ネイティブhadoopライブラリのロードを無効にするエラーは報告されません。

MacOSでHadoopを実行するためにbzip2をアクティブ化する必要はありません
原因不明

まず、考えてから追加します。質問がある場合は、メッセージを残すことができます。