小さなHadoop 2.2.0クラスターをゼロからセットアップする





この記事では、実験用の小さなHadoopクラスターを作成する手順を説明します。



インターネット上にはHadoopのセットアップ/デプロイに関する外部リソースに関する資料がたくさんありますが、それらのほとんどは以前のバージョン(0.XXおよび1.XX)のセットアップについて説明するか、シングルモード/擬似分散モードでのセットアップのみを説明し、部分的に完全に分散されたモードのみ。 ロシア語では、実質的に資料はまったくありません。



自分でHadoopが必要になったとき、すべてを構成できたのは初めてではありませんでした。 素材は無関係で、非推奨のパラメーターを使用する構成がしばしば登場したため、それらを使用することは望ましくありません。 そして、すべてがセットアップされたときでさえ、彼は答えを探していた多くの質問をしました。 他の人々も同様の質問をしました



興味のある方、猫へようこそ。



プリセット



クラスターのオペレーティングシステムとして、 Ubuntu Server 12.04.3 LTSを使用することをお勧めしますが、最小限の変更で、すべての手順を別のOSでも実行できます。



すべてのノードはVirtualBoxで実行されます。 小さく設定した仮想マシンのシステム設定。 わずか8 GBのハードドライブ領域、1つのコア、および512 MBのメモリ。 仮想マシンには、2つのネットワークアダプターも装備されています。1つはNAT、もう1つは内部ネットワーク用です。



オペレーティングシステムをダウンロードしてインストールしたら、sshとrsyncをアップグレードしてインストールする必要があります。

sudo apt-get update && sudo apt-get upgrade sudo apt-get install ssh sudo apt-get install rsync
      
      







Java



Hadoopを機能させるには、バージョン6またはバージョン7を使用できます。

この記事はOpenJDKバージョン7で動作します:



 $ sudo apt-get install openjdk-7-jdk
      
      







Oracleのバージョンを使用できますが。



そしてどうやって?
すべてのOpenJDK依存関係からOSをクリーンアップしますsudo apt-get purge openjdk *

新しいPPAを追加できるpython-software-propertiesをインストールします。

 sudo apt-get install python-software-properties
      
      





launchpad.net/~webupd8team/+archive/javaでPPAを追加します

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





続きを読む: PPAリポジトリ経由でUBUNTUにORACLE JAVA 7をインストールする





Hadoopを実行する別のアカウントを作成します



Hadoopを起動するには、専用のアカウントを使用します。 これは必須ではありませんが、推奨されます。 また、新しいユーザーにsudo権限を付与して、将来の生活を楽にします。



 sudo addgroup hadoop sudo adduser --ingroup hadoop hduser sudo usermod -aG sudo hduser
      
      







新しいユーザーを作成するときは、そのユーザーのパスワードを入力する必要があります。



/ etc /ホスト



互いに簡単にアクセスするには、すべてのノードが必要です。 大規模なクラスターでは、dnsサーバーを使用することをお勧めしますが、hostsファイルは小規模な構成に適しています。 その中で、ノードのIPアドレスとネットワーク上のその名前の対応を説明します。 1つのノードでは、ファイルは次のようになります。



 127.0.0.1 localhost # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 192.168.0.1 master
      
      







Ssh



hadoopクラスターのノードを管理するには、sshアクセスが必要です。 作成されたユーザーhduserに対して、マスターへのアクセスを提供します。

まず、新しいsshキーを生成する必要があります。



 ssh-keygen -t rsa -P ""
      
      







キーの作成中に、パスワードが要求されます。 今、あなたはそれを入力することはできません。



次の手順では、作成したキーを許可リストに追加します。



 cat $HOME/.ssh/id_rsa.pub >> $HOME/.ssh/authorized_keys
      
      







自分自身に接続してパフォーマンスを確認します。



 ssh master
      
      







IPv6を無効にする



IPv6を無効にしないと、多くの問題が発生する可能性があります。

Ubuntu 12.04 / 12.10 / 13.04でIPv6を無効にするには、sysctl.confファイルを編集する必要があります。



 sudo vim /etc/sysctl.conf
      
      







以下のパラメーターを追加します。



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







オペレーティングシステムを保存して再起動します。



しかし、IPv6が必要です!
hadoopでのみipv6を無効にするには、ファイルetc / hadoop / hadoop-env.shに追加できます。

 export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true
      
      









Apache Hadoopをインストールする



必要なファイルをダウンロードします。

フレームワークの現在のバージョンは次の場所にあります: www.apache.org/dyn/closer.cgi/hadoop/common



2013年12月の時点で、安定バージョンは2.2.0です。



ルートディレクトリにダウンロードフォルダーを作成し、最新バージョンをダウンロードします。



 sudo mkdir /downloads cd downloads/ sudo wget http://apache-mirror.rbc.ru/pub/apache/hadoop/common/stable/hadoop-2.2.0.tar.gz
      
      







パッケージの内容を/ usr / local /に展開し、フォルダーの名前を変更して、hduserユーザーに作成者権限を付与します。



 sudo mv /downloads/hadoop-2.2.0.tar.gz /usr/local/ cd /usr/local/ sudo tar xzf hadoop-2.2.0.tar.gz sudo mv hadoop-2.2.0 hadoop chown -R hduser:hadoop hadoop
      
      







$ HOME / .bashrcアップデート



便宜上、.bashrcに変数のリストを追加します。



 #Hadoop variables export JAVA_HOME=/usr/lib/jvm/java-1.7.0-openjdk-i386 export HADOOP_INSTALL=/usr/local/hadoop export PATH=$PATH:$HADOOP_INSTALL/bin export PATH=$PATH:$HADOOP_INSTALL/sbin export HADOOP_MAPRED_HOME=$HADOOP_INSTALL export HADOOP_COMMON_HOME=$HADOOP_INSTALL export HADOOP_HDFS_HOME=$HADOOP_INSTALL export YARN_HOME=$HADOOP_INSTALL
      
      







このステップで、準備が完了します。

Apache Hadoopを構成する





以降のすべての作業は、フォルダー/ usr / local / hadoopから実行されます。

etc / hadoop / hadoop-env.shを開き、JAVA_HOMEを設定します。



 vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh
      
      







クラスタ内のどのノードをファイルetc / hadoop / slavesに記述します



 master
      
      







このファイルはメインノードにのみ配置できます。 新しいノードはすべてここで説明する必要があります。



メインのシステム設定はetc / hadoop / core-site.xmlにあります。

 <configuration> <property> <name>fs.defaultFS</name> <value>hdfs://master:9000</value> </property> </configuration>
      
      







HDFS設定はetc / hadoop / hdfs-site.xmlにあります:



 <configuration> <property> <name>dfs.replication</name> <value>1</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/local/hadoop/tmp/hdfs/namenode</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/usr/local/hadoop/tmp/hdfs/datanode</value> </property> </configuration>
      
      







ここで、dfs.replicationパラメーターは、ファイルシステムに格納されるレプリカの数を設定します。 デフォルトでは、その値は



3.クラスター内のノードの数を超えることはできません。

dfs.namenode.name.dirおよびdfs.datanode.data.dirパラメーターは、HDFSでデータと情報が物理的に配置されるパスを指定します。 tmpフォルダーを事前に作成する必要があります。



YARNを使用することをクラスターに知らせます。 これを行うには、etc / hadoop / mapred-site.xmlを変更します。



 <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> </configuration>
      
      







すべてのYARN設定はetc / hadoop / yarn-site.xmlに記述されています:



 <configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>master:8030</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>master:8032</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>master:8088</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>master:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>master:8033</value> </property> </configuration>
      
      







リソースマネージャーの設定は、クラスターのすべてのノードがコントロールパネルに表示されるようにするために必要です。



HDFSのフォーマット:

 bin/hdfs namenode –format
      
      







hadoopサービスを実行します。



 sbin/start-dfs.sh sbin/start-yarn.sh
      
      







*以前のバージョンのHadoopはsbin / start-all.shスクリプトを使用していましたが、バージョン2から非推奨になりました。*。*



次のJavaプロセスが実行されていることを確認する必要があります。

 hduser@master:/usr/local/hadoop$ jps 4868 SecondaryNameNode 5243 NodeManager 5035 ResourceManager 4409 NameNode 4622 DataNode 5517 Jps
      
      







標準的な例を使用して、クラスターの動作をテストできます。



 bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar
      
      







これで、クラスターを作成するための基礎となる既製のイメージが作成されました。



次に、必要な数の画像のコピーを作成できます。



コピーでは、ネットワークを構成する必要があります。 ネットワークインターフェイスの新しいMACアドレスを生成し、それらに必要なIPアドレスを発行する必要があります。 私の例では、192.168.0.Xなどのアドレスを使用しています。



クラスターのすべてのノードで/ etc / hostsファイルを修正して、すべての一致がそこに書き込まれるようにします。



 127.0.0.1 localhost # The following lines are desirable for IPv6 capable hosts ::1 ip6-localhost ip6-loopback fe00::0 ip6-localnet ff00::0 ip6-mcastprefix ff02::1 ip6-allnodes ff02::2 ip6-allrouters 192.168.0.1 master 192.168.0.2 slave1 192.168.0.3 slave2
      
      









便宜上、新しいノードの名前をslave1とslave2に変更します。



どうやって?
2つのファイルを変更する必要があります:/ etc / hostnameおよび/ etc / hosts。





ノードで新しいSSHキーを生成し、それらをすべてマスターノードで許可されたリストに追加します。



クラスターの各ノードで、etc / hadoop / hdfs-site.xmlのdfs.replicationパラメーターの値を変更します。 たとえば、すべての場所で値を3に設定します。

etc / hadoop / hdfs-site.xml
 <configuration> <property> <name>dfs.replication</name> <value>3</value> </property> </configuration>
      
      









マスターノード上の新しいノードをetc / hadoop / slavesファイルに追加します。



 master slave1 slave2
      
      







すべての設定が登録されたら、メインノードでクラスターを起動できます。



 bin/hdfs namenode –format sbin/start-dfs.sh sbin/start-yarn.sh
      
      







次のプロセスは、スレーブノードで開始する必要があります。



 hduser@slave1:/usr/local/hadoop$ jps 1748 Jps 1664 NodeManager 1448 DataNode
      
      







これで、独自のミニクラスターができました。



Word Countタスクを実行しましょう。

これを行うには、いくつかのテキストファイルをHDFSにアップロードする必要があります。

たとえば、 無料の電子書籍サイトProject Gutenbergからtxt形式の書籍を取りました。



テストファイル
 cd /home/hduser mkdir books cd books wget http://www.gutenberg.org/cache/epub/20417/pg20417.txt wget http://www.gutenberg.org/cache/epub/5000/pg5000.txt wget http://www.gutenberg.org/cache/epub/4300/pg4300.txt wget http://www.gutenberg.org/cache/epub/972/pg972.txt wget http://www.gutenberg.org/cache/epub/132/pg132.txt wget http://www.gutenberg.org/cache/epub/1661/pg1661.txt wget http://www.gutenberg.org/cache/epub/19699/pg19699.txt
      
      







ファイルをHDFSに転送します。

 cd /usr/local/hadoop bin/hdfs dfs -mkdir /in bin/hdfs dfs -copyFromLocal /home/hduser/books/* /in bin/hdfs dfs -ls /in
      
      







ワードカウントを起動します。



 bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar wordcount /in /out
      
      







コンソールまたはマスターの ResourceManagerのWebインターフェース(8088 / cluster / apps /



完了すると、結果はHDFSの/ outフォルダーに配置されます。

ローカルファイルシステムにダウンロードするには、次を実行します。

 bin/hdfs dfs -copyToLocal /out /home/hduser/
      
      







質問がある場合は、コメントで質問してください。



All Articles