CentOS7はスタンドアロンHadoop2.7.3をインストールします

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:不正なファイル記述の例外が報告されます。まだ問題を解決する方法がわかりません。これを理解している友人は、返信してポインタを与えることを歓迎します。ありがとうございました。

おすすめ

転載: blog.csdn.net/killingbow/article/details/54693656
おすすめ