CentOS7はスタンドアロンHadoop2.7.3をインストールします
準備
javaをインストールし、oracle公式Webサイトからダウンロードしたjdk-8u111-linux-x64.rpmを仮想マシンにコピーします。そしてインストール:
rpm -i jdk-8u111-linux-x64.rpm
javaパスを環境変数として設定し、/ etc / profileファイルを編集して、次の行を追加します。
export JAVA_HOME=/usr/java/latest
sourceコマンドを使用してJAVA_HOME環境変数を適用し、検証します
echo $JAVA_HOME //输出空路径 source /etc/profile echo $JAVA_HOME //此时输出正确的JAVA_HOME
hadoop-2.7.3.tar.gzをユーザーパスにコピーします。
解凍
tar -xf hadoop-2.7.3.tar.gz
hadoop-2.7.3ディレクトリを取得し、入力します。
hadoopプログラムをスタンドアロン形式で実行する
詳細については、http://hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-common/SingleCluster.htmlを参照してください。
最初のステップは、Hadoopプログラムをスタンドアロンモードで実行することです。
次のように、HadoopのJava実行パスを構成し、Hadoop-2.7.3パスの下のetc / hadoop / hadoop-env.shファイルを編集して、javaパスを追加します。
export JAVA_HOME=/usr/java/latest
Hadoop独自のmapReduceの例を実行します。
//在Hadoop-2.7.3路径下创建input目录 $ mkdir input //将hadoop的配置拷贝到刚创建的input目录下 $ cp etc/hadoop/*.xml input //对input路径下的文件执行Hadoop自带示例中的MapReduce程序,并将输出写入到output目录中。**这里增加了2>>err.txt,由于Hadoop的输出一闪而过,通过这条参数将其输出到err.txt文件中。** $ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep input/ output/ 'dfs[a-z.]+' 2>>err.txt $ cat output/*
実行後、err.txtファイルを確認し、エラーが報告されていることを確認しますが、エラーの理由は一時的に不明です。
EBADF:Bad file descriptor
コマンドを使用して、出力ディレクトリの出力を表示します
1 dfsadmin
mapReduceプログラムを再度実行する場合は、最初にoutputコマンドを削除する必要があります。そうしないと、出力ディレクトリがすでに存在するというエラーメッセージが表示されます。
2番目のステップは、疑似分散(オープンHDFS)を構築することです。
Apacheチュートリアルに従って、core-site.xmlとhdfs-site.xmlを構成します
sshをインストールします
分散ファイルシステムをフォーマットする
$ bin / hdfs目的-フォーマット
分散ファイルシステムを起動するには、途中で「はい」と入力することを数回確認する必要があります。namenode、datanode、secondarynamenodeをそれぞれ開始します。
$ sbin / start-dfs.sh
ブラウザがhttp:// localhost:50070にアクセスすると、hdfsへのリモートアクセスのページが表示され、HDFSが正常に起動します。
hdfsに入力ディレクトリを作成します
bin/hdfs dfs -mkdir /input
ファイルシステムのHadoop-2.7.3インストールディレクトリの下にある構成パスetc / hadoop内のすべての構成ファイルを、hdfsの/ inputディレクトリにコピーします。
bin/hdfs dfs -put etc/hadoop/* /input
前のmapReduceの例をHDFSで実行し、エラーログをerr2.txtに出力します。
$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep input output 'dfs[a-z.]+' 2>>err2.txt
不正なファイル記述の例外がまだ含まれていることがわかります。後でこの例外の原因を探してください。
mapReduce計算の出力を今すぐ表示
$ bin/hdfs dfs -cat /output/*
hdfsをオフにしたい場合は、以下を使用してください。
$ sbin/stop-dfs.sh
3番目のステップは、単一ノードで糸を開始することです
Apacheの公式チュートリアルによると、2つの構成ファイルmapred-site.xmlとyarn-site.xmlを編集します。
糸を開始するコマンドを入力します
sbin/start-yarn.sh
糸を閉じる場合は、次のコマンドを入力します。
sbin/stop-yarn.sh
総括する
当初、仮想マシンには2GのメモリとシングルコアCPUのみが割り当てられていました。上記のMapReduceの例を実行すると、スタックします。ログを分析すると、OutOfMemoryとTimeOutの両方の例外があることがわかりました。CPUを4コアに、メモリを5Gに増やすことで、MapReduceの例を糸でスムーズに実行できます。
さらに、bin / hdfs dfs…コマンド操作を使用すると、HDFSは常に遅く感じます。後でサーバーで高速化できるかどうかはわかりません。
Hadoop単一マシンが独自の例を実行すると、バックグラウンドでEBADF:不正なファイル記述の例外が報告されます。まだ問題を解決する方法がわかりません。これを理解している友人は、返信してポインタを与えることを歓迎します。ありがとうございました。