この記事では、実験用の小さな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をインストールします。
launchpad.net/~webupd8team/+archive/javaでPPAを追加します
続きを読む: PPAリポジトリ経由でUBUNTUにORACLE JAVA 7をインストールする
新しい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/
質問がある場合は、コメントで質問してください。