小さな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/ 


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

Source: https://habr.com/ru/post/J206196/


All Articles