Hadoopのインストール方法は?


26

Ubuntu 12.04バージョンにHadoopをインストールしようとしています。以下からの指示に従って http://michael-noll.com/tutorials/running-hadoop-on-ubuntu-linux-single-node-cluster/、私はインストールjava-6-openjdkUbuntuのソフトウェアセンターから。に設定しjava_homeました.bashrc。またjava_home、Hadoopで設定しますconf/env.sh。ネームノードのフォーマット中に、次のエラーが表示されます。

usr/lib/jvm/java-6-openjdk/bin/java no such file or directory.

ありがとうございました。しかし、それは64ビットOSです。


1
ユーザーが解決策を見つけたのになぜ恩恵があるのですか?どんな答えが期待されますか?

1
@ green7意図は、実際に承認済みとマークされた回答、非常に詳細な回答などを見つけることです。存在しないように見えるので、私はホルヘが賞金を追加することを理解できます。
トーマスウォード

@TheLordofTime質問がローカライズされているため、詳細な回答にはせいぜい5行しか含まれていません。そして、Hadoopのインストール手順を含む回答が期待される場合、質問で言及されているリンクがすばらしい説明をするので、それは冗長になります。さらに、最も多くの票を得た回答が質問者自身によって投稿されたため、他の回答を受け入れる可能性はほとんどありません。

@ green7質問があまりにもローカライズされている場合、そのようにそれを閉じるために投票しますか?
トーマス・ウォード

回答:


39

12.04を使用していたときに従ったガイドは次のとおりです。

MyLearningには、OpenJDK 7ではなくOracle Java 7が最初に推奨されたため、実際に反対しましたが、これを試すときにOpenJDK 7で問題が発生したため、Oracleを使用する必要がありました。

ガイドはほとんど単純明快で、ここにあります:

  1. Javaをインストールする

    sudo add-apt-repository ppa:webupd8team/java  
    sudo apt-get update && sudo apt-get upgrade  
    sudo apt-get install oracle-java7-installer  
    
  2. Hadoopユーザーを作成する

    sudo addgroup hadoop  
    sudo adduser --ingroup hadoop hduser
    

    hduserは、必要なHadoopユーザーです。

  3. SSHの構成

    su - hduser   
    ssh-keygen -t rsa -P ""
    cat .ssh/id_rsa.pub >> .ssh/authorized_keys
    

    SSHのインストールが適切に行われたことを確認するには、新しいターミナルを開きhduser、次のコマンドを使用してsshセッションの作成を試行できます。

    ssh localhost
    

    localhostが接続しない場合はsshを再インストールします(hduser以下の手順でsudo に追加する必要がある場合があります)

    sudo apt-get install openssh-server
    
  4. Sudoersを編集

    sudo visudo
    
  5. 行の最後にhduserをsudoersに追加します

    hduser ALL=(ALL:ALL) ALL
    

    CTRL+ を押して保存するにはX、タイプYして押しますENTER

  6. IPv6を無効にする

    sudo gedit /etc/sysctl.conf
    

    または

    sudo nano /etc/sysctl.conf
    

    ファイルの最後に次の行をコピーします。

    #disable ipv6  
    net.ipv6.conf.all.disable_ipv6 = 1  
    net.ipv6.conf.default.disable_ipv6 = 1   
    net.ipv6.conf.lo.disable_ipv6 = 1  
    

    あなたがあなたに伝える問題に直面した場合、あなたは権限を持っていません、ルートアカウントで前のコマンドを実行するだけです(sudoが十分でない場合。私にとってはそれでした)

  7. 次にリブートします。

    あなたもできますsudo sysctl -pが、私はむしろリブートします。

    再起動後、IPv6がオフになっていることを確認します。

    cat /proc/sys/net/ipv6/conf/all/disable_ipv6
    

    それは言うべき10と表示されている場合、何かを見逃しています。

  8. Hadoopのインストール

    これを行うにはいくつかの方法がありますが、ガイドが示唆している方法は、Apache Hadoopサイトからダウンロードし、hduserホームフォルダー内のファイルを解凍することです。抽出したフォルダーの名前をhadoop

    もう1つの方法は、12.04でテストされたPPAを使用することです。

    sudo add-apt-repository ppa:hadoop-ubuntu/stable  
    sudo apt-get update && sudo apt-get upgrade  
    sudo apt-get install hadoop  
    

    注:PPAは一部のユーザーで機能し、他のユーザーでは機能しない場合があります。私が試みたのは、PPAについて知らなかったため、公式サイトからダウンロードすることでした。

  9. 更新 $HOME/.bashrc

    .bashrcfor hduser(およびHadoopを管理する必要があるすべてのユーザー)を更新する必要があります。開くには.bashrc、ファイルは、rootとして、それを開く必要があります。

    sudo gedit /home/hduser/.bashrc  
    

    または

    sudo nano /home/hduser/.bashrc  
    

    次に、.bashrcファイルの最後に次の構成を追加します

    # Set Hadoop-related environment variables   
    export HADOOP_HOME=/home/hduser/hadoop  
    
    # Set JAVA_HOME (we will also configure JAVA_HOME directly for Hadoop later on)`
    export JAVA_HOME=/usr/lib/jvm/java-7-oracle  
    

    OpenJDK7を使用している場合、次のようになります。

    export JAVA_HOME=/usr/lib/java-7-openjdk-amd64  
    

    ここで注意することは、AMD64バージョンでJavaが存在するフォルダーです。上記が機能しない場合は、その特定のフォルダーを調べるか、使用するJavaを設定してみてください。

    sudo update-alternatives --config java  
    

    いくつかの便利なエイリアスについて:

    # Some convenient aliases and functions for running Hadoop-related commands  
    unalias fs &> /dev/null   
    alias fs="hadoop fs"    
    unalias hls &> /dev/null  
    alias hls="fs -ls"  
    
    # Add Hadoop bin/ directory to PATH  
    export PATH=$PATH:$HADOOP_HOME/bin  
    
  10. Hadoopの構成

    以下は、適切な構成を行うために使用できる構成ファイルです。Hadoopで使用するファイルの一部は次のとおりです(このサイトの詳細情報)。

    start-dfs.sh-Hadoop DFSデーモン、namenodeおよびdatanodeを開始します。start-mapred.shの前にこれを使用してください

    stop-dfs.sh -Hadoop DFSデーモンを停止します。

    start-mapred.sh -Hadoop Map / Reduceデーモン、jobtrackerおよびtasktrackerを開始します。

    stop-mapred.sh -Hadoop Map / Reduceデーモンを停止します。

    start-all.sh-すべてのHadoopデーモン、namenode、datanode、jobtracker、tasktrackerを起動します。非推奨。start-dfs.shを使用してからstart-mapred.shを使用します

    stop-all.sh-すべてのHadoopデーモンを停止します。非推奨。stop-mapred.shを使用してから、stop-dfs.shを使用します

    ただし、それらの使用を開始する前に、/confフォルダー内のいくつかのファイルを変更する必要があります。

    hadoop-env.sh

    ファイルを探しhadoop-env.sh、このファイルのJAVA_HOME変数のみを更新する必要があります。

    sudo gedit /home/hduser/hadoop/conf/hadoop-env.sh
    

    または

    sudo nano /home/hduser/hadoop/conf/hadoop-env.sh
    

    または最新バージョンでは

    sudo nano /etc/hadoop/conf.empty/hadoop-env.sh
    

    または

    sudo nano /etc/hadoop/hadoop-env.sh
    

    次に、次の行を変更します。

    # export JAVA_HOME=/usr/lib/j2sdk1.5-sun
    

    export JAVA_HOME=/usr/lib/jvm/java-7-oracle
    

    注:Error: JAVA_HOME is not setサービスの開始中にエラーが発生した場合、前の行のコメントを外すのを忘れました(#を削除するだけです)。

    core-site.xml

    次に、Hadoopフレームワーク用の一時ディレクトリを作成する必要があります。テストまたはクイックプロトタイプにこの環境が必要な場合(たとえば、個人テスト用の単純なhadoopプログラムを開発する場合など)、/home/hduser/ディレクトリの下にこのフォルダーを作成することをお勧めします。/ usr / local ...)に似ていますが、セキュリティ上の問題に直面する可能性があります。しかし、セキュリティ(java.io.IOExceptionなど)によって引き起こされる可能性のある例外を克服するために、hduserスペースの下にtmpフォルダーを作成しました。

    このフォルダーを作成するには、次のコマンドを入力します。

    sudo mkdir /home/hduser/tmp   
    

    別の管理ユーザー(hadoopグループのhduser2など)を作成する場合は、次のコマンドを使用して、このフォルダーに対する読み取りおよび書き込み権限を付与する必要があります。

    sudo chown hduser:hadoop /home/hduser/tmp  
    sudo chmod 755 /home/hduser/tmp  
    

    これでhadoop/conf/core-site.xml、hadoop.tmp.dirエントリを編集するために開くことができます。テキストエディターを使用してcore-site.xmlを開くことができます。

    sudo gedit /home/hduser/etc/hadoop/core-site.xml  
    

    または

    nano /home/hduser/etc/hadoop/core-site.xml
    

    次に<configure>xml要素の間に次の構成を追加します。

    <property>
      <name>hadoop.tmp.dir</name>
      <value>/home/hduser/tmp</value>
      <description>A base for other temporary directories.</description>
    </property>
    
    <property>
      <name>fs.default.name</name>
      <value>hdfs://localhost:54310</value>
      <description>The name of the default file system.  A URI whose
      scheme and authority determine the FileSystem implementation.  The
      uri's scheme determines the config property (fs.SCHEME.impl) naming
      the FileSystem implementation class.  The uri's authority is used to
      determine the host, port, etc. for a filesystem.</description>
    </property>
    

    今すぐ編集 mapred-site.xml

    <property>
      <name>mapred.job.tracker</name>
      <value>localhost:54311</value>
      <description>The host and port that the MapReduce job tracker runs
      at.  If "local", then jobs are run in-process as a single map
      and reduce task.
      </description>
    </property>
    

    今すぐ編集 hdfs-site.xml

    <property>
      <name>dfs.replication</name>
      <value>1</value>
      <description>Default block replication.
      The actual number of replications can be specified when the file is created.
      The default is used if replication is not specified in create time.
      </description>
    </property> 
    
  11. NameNodeのフォーマット

    これで、ノードでの作業を開始できます。最初の形式:

    ~/hduser/hadoop/bin/hadoop namenode -format
    

    または

    ./home/hduser/hadoop/bin/hadoop namenode -format
    

    HDFSでNameNodeをフォーマットする必要があります。システムの実行中にこの手順を実行しないでください。通常、インストールの最初に一度だけ行われます。

  12. Hadoopクラスターの開始

    hadoop / binディレクトリに移動して、./start-all.shスクリプトを実行する必要があります。

    cd ~/hduser/hadoop/bin/  
    start-all.sh  
    

    ガイドに示されているものとは異なるバージョンがある場合(PPAまたはそれより新しいバージョンでこれを行う場合に最も可能性が高い)、次の方法で試してください。

    cd ~/hduser/hadoop/bin/   
    start-dfs.sh  
    start-mapred.sh   
    

    これにより、マシン上でNamenode、Datanode、Jobtracker、Tasktrackerが起動します。

  13. Hadoopが実行されているかどうかを確認する

    という素晴らしいツールがありますjps。これを使用して、すべてのサービスが稼働していることを確認できます。hadoop binフォルダーに次のように入力します。

    jps
    

    すべてのHadoop関連プロセスが表示されます。

    注:これは約6か月前に行われたため、動作していない部分がある場合はお知らせください。

Jujuを使用したHadoop(HadoopのJujuチャーム)

Charming Hadoopから取得

以下がすでに設定されていると仮定します。

  • サーバーにJujuが既に設定されています
  • サーバーにアクセスできる(ローカルまたはリモート)
  • Jujuを構成し、チャームの追加を開始する準備ができました
  • 12.04を使用しています(これはすべて12.04でテストしたためです)
  • ~/.juju/environments.yamlPPAオリジンを含む、使用するサーバーに関する情報をすでに設定しています。

次の手順に従って、Hadoopサービスを実行します。

  1. Hadoopの環境をブートストラップする

    juju bootstrap
    

    完了するまで待ってから、正しく接続されているかどうかを確認します。

    juju status
    
  2. Hadoopを展開する(マスターとスレーブ)

    juju deploy --constraints="instance-type=m1.large" hadoop hadoop-master   
    
    juju deploy --constraints="instance-type=m1.medium" -n 5 hadoop hadoop-slave
    
  3. 関係を作成する

    juju add-relation hadoop-master:namenode hadoop-slave:datanode  
    
    juju add-relation hadoop-master:jobtracker hadoop-slave:tasktracker
    
  4. Hadoopを公開します(すでにリレーションを展開および作成しているため、サービスが実行されている必要があります)

    juju expose hadoop-master
    

    ステータスを確認して、正常に機能するかどうかを確認します。

    juju status hadoop-master
    

これまで、実行中のHadoopがあります。提供されているリンクまたは公式のJuju Charm for Hadoopには、さらに多くのことができます。

最新のJuJuチャーム(セットアップ、ステップバイステップガイドなど)については、JuJuチャームにアクセスして独自のJuJu環境を作成し、各ファイルのセットアップ方法と各サービスの接続方法を確認してください。



hduser (ALL)=(ALL:ALL) ALL 構文エラーをスローします...
tutuca 14

してみてくださいhduser ALL=(ALL:ALL) ALL括弧の最初のペアを削除し、
ssoto

1
@ssotoはチェックしたばかりで、はい。たぶん彼らは最新バージョンでそれを変更した。
ルイスアルバラード14

1
.bachrcヨハン・セバスチャンがそれを聞くまで待ちます。ああ、待って、彼はできない…彼は耳が聞こえないからだ。:-D
デビッドフォースター

6

のパスを設定してHadoopを正常にインストールしJAVA_HOMEましたusr/lib/jvm/java-6-openjdk-amd64


もう少し詳しく説明してもらえますか?
パンサー

3

@Luis Alvaradoの回答から派生した、Ubuntu 14.04およびHadoop 2.5.1用の私のバージョンです。

手短に

  1. Javaをインストールする
  2. Hadoopのエグゼクティブユーザーを準備するhduser
  3. hduserこれから切り替えます
  4. hduserパスフレーズなしでssh経由でリモートに許可
  5. IPv6を無効にする
  6. Hadoopパッケージをダウンロードして構成する
  7. システムパス$ HADOOP_HOMEおよび$ JAVA_HOMEを準備します
  8. Config Hadoopのサービス
  9. Hadoopのサービスを開始する

できた がんばろう!

詳細手順

Javaをインストールする

ダウンロードとインストール

$ sudo add-apt-repository ppa:webupd8team/java    
$ sudo apt-get update && sudo apt-get upgrade    
$ sudo apt-get install oracle-java7-installer

Java7がインストールされていることを確認してください

$ which java
$ ls -l /usr/bin/java
$ ls -l /etc/alternatives/java

私たちはjava指す必要があります/usr/lib/jvm/java-7-oracle/jre/bin/java

Hadoopのエグゼクティブユーザーを準備するhduser

hduserグループにユーザーを作成hadoop

$ sudo addgroup hadoop  
$ sudo adduser --ingroup hadoop hduser

グラントはsudo権限をhduser

sudoを編集

$ sudo visudo

この行の最後に追加します

hduser ALL=(ALL:ALL) ALL

hduserこれから切り替えます

$ su - hduser

hduserパスフレーズなしでssh経由でリモートに許可

opensshをインストールする

$ sudo apt-get install openssh-server

SSH接続用のRSA公開/秘密キーを生成します。パスフレーズは空ですparameter -P ""

$ ssh-keygen -t rsa -P ""
$ cat .ssh/id_rsa.pub >> .ssh/authorized_keys

hduserパスワードなしでローカルでsshできることを確認してください

$ ssh localhost

IPv6を無効にする

構成ファイルを編集します

$ sudo nano /etc/sysctl.conf

最後までコピー

#disable ipv6
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1   
net.ipv6.conf.lo.disable_ipv6 = 1

リブートまたは呼び出しによってIPv6がオフになっていることを確認してください

$ sudo sysctl -p 

それから電話する

$ cat /proc/sys/net/ipv6/conf/all/disable_ipv6

OKを意味する1を言う必要があります^^

Hadoopパッケージをダウンロードして構成する

Apache HadoopサイトからHadoop 2.5.1パッケージをダウンロードします

このパッケージの直接URLはこのリンクです

http://www.eu.apache.org/dist/hadoop/core/hadoop-2.5.1/hadoop-2.5.1.tar.gz

hduserのホームフォルダーにダウンロードして展開し、名前をhadoop

$ wget http://www.eu.apache.org/dist/hadoop/core/hadoop-2.5.1/hadoop-2.5.1.tar.gz
$ tar -xvzf hadoop-2.5.1.tar.gz
$ mv hadoop-2.5.1 hadoop

Hadoopがhduser家に保管されていることを確認してください

$ ls /home/hduser/hadoop

システムパス$ HADOOP_HOMEおよび$ JAVA_HOMEを準備します

編集hduserの.bashrcファイル

$ nano .bashrc

$HADOOP_HOMEおよびの値を最後に追加$JAVA_HOME

# Set Hadoop-related environment variables   
export HADOOP_HOME=/home/hduser/hadoop  

# Set JAVA_HOME (we will also configure JAVA_HOME directly for Hadoop later on)
export JAVA_HOME=/usr/lib/jvm/java-7-oracle 

Hadoop binaryフォルダーをシステムに追加します$PATH

export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

新しいターミナルを開き、としてログインしhduser、使用可能なコマンドを含む$ HADOOP_HOMEがあることを確認します

$ echo $HADOOP_HOME
$ which start-all.sh
$ which start-dfs.sh
$ which start-yarn.sh

これらの名前の完全なパスが表示されるはずです。

Config Hadoopのサービス

Hadoopの各コンポーネントは、XMLファイルを使用して構成されます。

  • 共通のプロパティはcore-site.xmlにあります

  • HDFSプロパティはhdfs-site.xmlにあります

  • MapReduceプロパティはmapred-site.xmlにあります

ここに画像の説明を入力してください

これらのファイルはすべてフォルダー$ HADOOP_HOME / etc / hadoopにあります

hadoop-env.shの行を編集して、再びJAVA_HOMEを定義します

export JAVA_HOME=/usr/lib/jvm/java-7-oracle

core-site.xmlでHadoop temp folderfile system名前を定義します

<configuration>
  ...
  <property>
    <name>hadoop.tmp.dir</name>
    <value>/home/hduser/tmp</value>
    <description>A base for other temporary directories.</description>
  </property>

  <property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:54310</value>
    <description>The name of the default file system.  A URI whose
    scheme and authority determine the FileSystem implementation.  The
    uri's scheme determines the config property (fs.SCHEME.impl) naming
    the FileSystem implementation class.  The uri's authority is used to
    determine the host, port, etc. for a filesystem.</description>
  </property>
  ...
</configuration>

temp folder構成されたとおりにこれを準備する必要があります/home/hduser/tmp

$ cd /home/hduser
$ mkdir tmp
$ chown hduser:hadoop tmp
$ chmod 755 tmp

定義はfile system「S block replicationHDFS-site.xmlの

<configuration>
  ...
  <property>
    <name>dfs.replication</name>
    <value>1</value>
    <description>Default block replication.
    The actual number of replications can be specified when the file is created.
    The default is used if replication is not specified in create time.
    </description>
  </property>
  ...
</configuration>

mapred-site.xmlで定義map-reduce jobます

<configuration>
  ...
  <property>
    <name>mapred.job.tracker</name>
    <value>localhost:54311</value>
    <description>The host and port that the MapReduce job tracker runs
    at.  If "local", then jobs are run in-process as a single map
    and reduce task.
    </description>
  </property>
  ...
</configuration>

フォーマット name node

$ hdfs namenode -format

Hadoopサービスを開始する

コール

$ start-dfs.sh && start-yarn.sh

これらの2つのコマンドは、以前にシステム$ PATHに追加した$ HADOOP_HOME / sbinにあります。

Hadoopサービスが適切に開始されていることを確認してください

$ jps

見るはずです

ここに画像の説明を入力してください


1
従うべき非常に素晴らしいガイド。マイナーな間違いがあります:mapred-site.xml最初に存在しません。作成する必要がありますcp mapred-site.xml.template mapred-site.xml
ラプター

1

このコマンドでインストールできるようにするにsun-javaは、apt-getというファイルに行を追加する必要がありますsources.list。このファイルはにあります/etc/apt/sources.list

次のコマンドを使用してファイルを開きます。

sudo nano /etc/apt/sources.list

次に、そのファイルの(最後の)最後に、次の行をコピーして貼り付けます。

deb http://us.archive.ubuntu.com/ubuntu/ hardy multiverse

次に、Ctrl+ Xを押して終了し、y保存します。


次のコマンドを入力します。

sudo apt-get update 

そして、それが完了すると、コマンドを正常に実行できます。

sudo apt-get install sun-java6-jdk

0

最新のチュートリアル(違いについてはわかりません)については、hadoopスクリーンキャストのビデオチュートリアルを参照してください。ビデオと、その下にインストールする実際のコマンドを提供します。また、あなたが作家にメールを送った場合、彼はあなたが何かにこだわった場合に応答し、あなたを助けることを非常に喜んでいます。

これらの指示は、@ Luisが応答した指示とほぼ同じです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.