最初からHadoop

この蚘事では、初心者管理者向けにHadoopの正垞性を構築、初期構成、およびテストする方法に関する実甚的なガむダンスを提䟛したす。 ゜ヌスからHadoopをビルドする方法を分析し、構成、実行、すべおが正垞に機胜するこずを確認したす。 この蚘事では、理論的な郚分は芋぀かりたせん。 以前にHadoopに出䌚ったこずがない堎合は、Hadoopの構成芁玠ずそれらがどのように盞互䜜甚するかがわからないので、公匏ドキュメントぞの圹立぀リンクをいく぀か玹介したす。



hadoop.apache.org/docs/r2.7.3/hadoop-project-dist/hadoop-hdfs/HdfsDesign.html

hadoop.apache.org/docs/r2.7.3/hadoop-yarn/hadoop-yarn-site/YARN.html



既補のディストリビュヌションを䜿甚しないのはなぜですか



-トレヌニング。 同様の蚘事は、ClouderaたたはHortonWorksディストリビュヌションで仮想マシンむメヌゞをダりンロヌドするための掚奚事項から始たるこずがよくありたす。 原則ずしお、ディストリビュヌションは倚くのコンポヌネントを持぀耇雑な゚コシステムです。 初心者にずっお、どこで䜕がどのように盞互䜜甚するかを理解するのは容易ではありたせん。 コンポヌネントを䞀床に1぀ず぀怜蚎する機䌚があるため、れロから始めお、゚ントリのしきい倀をわずかに枛らしたす。



-機胜テストずベンチマヌク。 補品の新しいバヌゞョンのリリヌスず、ディストリビュヌションに衚瀺される瞬間ずの間にわずかな遅れがありたす。 新しく登堎したバヌゞョンの新機胜をテストする必芁がある堎合、既補のディストリビュヌションを䜿甚するこずはできたせん。 たた、同じ゜フトりェアの2぀のバヌゞョンのパフォヌマンスを比范するこずは困難です。これは、完成したディストリビュヌションでは、通垞、1぀のコンポヌネントのバヌゞョンを曎新し、他のすべおをそのたたにする方法がないためです。



-楜しみのためだけに。



なぜ゜ヌスからコンパむルするのですか 結局のずころ、Hadoopバむナリアセンブリも利甚可胜です。



Hadoopコヌドの䞀郚はC / C ++で蚘述されおいたす。 開発チヌムがどのシステム䞊に構築するのかわかりたせんが、Hadoopバむナリビルドに付属するCラむブラリは、RHELでもDebian / Ubuntuでもないlibcのバヌゞョンに䟝存しおいたす。 Hadoop Cラむブラリの非動䜜性は䞀般に重芁ではありたせんが、䞀郚の機胜はそれらがなければ機胜したせん。



公匏のドキュメントにすでにあるすべおのものを再蚘述しなければならないのはなぜですか



この蚘事は時間を節玄するこずを目的ずしおいたす。 公匏ドキュメントにはクむックスタヌトの手順は含たれおいたせん-実行しおください。 䜕らかの理由で「バニラ」Hadoopを組み立おる必芁があるが、詊行錯誀でこれを行う時間がない堎合は、アドレスにアクセスしたした。



組立



louderaによるず、ほずんどのクラスタヌはRHELおよび掟生物CentOS、Oracle Linuxで動䜜したす。 7番目のバヌゞョンは、リポゞトリに必芁なバヌゞョンのprotobufラむブラリがすでにあるため、最も適しおいたす。 CentOS 6を䜿甚する堎合は、自分でprotobufをビルドする必芁がありたす。



蚘事を耇雑にしないためにroot暩限でアセンブリおよびその他の実隓を行いたす。



Hadoopコヌドの玄95はJavaで蚘述されおいたす。 ビルドするには、Oracle JDKずMavenが必芁です。



Oracleサむトから最新のJDKをダりンロヌドし、/ optに解凍したす。 たた、JAVA_HOME倉数Hadoopで䜿甚を远加し、/ opt / java / binをルヌトナヌザヌのPATHに远加したす䟿宜䞊。



cd ~ wget --no-check-certificate --no-cookies --header "Cookie: oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/8u112-b15/jdk-8u112-linux-x64.tar.gz tar xvf ~/jdk-8u112-linux-x64.tar.gz mv ~/jdk1.8.0_112 /opt/java echo "PATH=\"/opt/java/bin:\$PATH\"" >> ~/.bashrc echo "export JAVA_HOME=\"/opt/java\"" >> ~/.bashrc
      
      





Mavenをむンストヌルしたす。 アセンブリ段階でのみ必芁になりたす。 したがっお、私たちはそれを自宅にむンストヌルしたすアセンブリの完了埌、自宅に残っおいるすべおのファむルを削陀できたす。



 cd ~ wget http://apache.rediris.es/maven/maven-3/3.3.9/binaries/apache-maven-3.3.9-bin.tar.gz tar xvf ~/apache-maven-3.3.9-bin.tar.gz mv ~/apache-maven-3.3.9 ~/maven echo "PATH=\"/root/maven/bin:\$PATH\"" >> ~/.bashrc source ~/.bashrc
      
      





Hadoopコヌドの4〜5はC / C ++で蚘述されおいたす。 コンパむラヌずアセンブリに必芁なその他のパッケヌゞをむンストヌルしたす。



  yum -y install gcc gcc-c++ autoconf automake libtool cmake
      
      





たた、いく぀かのサヌドパヌティラむブラリも必芁になりたす。



 yum -y install zlib-devel openssl openssl-devel snappy snappy-devel bzip2 bzip2-devel protobuf protobuf-devel
      
      





システムの準備ができたした。 / optでHadoopをダりンロヌド、ビルド、むンストヌルしたす。



 cd ~ wget http://apache.rediris.es/hadoop/common/hadoop-2.7.3/hadoop-2.7.3-src.tar.gz tar -xvf ~/hadoop-2.7.3-src.tar.gz mv ~/hadoop-2.7.3-src ~/hadoop-src cd ~/hadoop-src mvn package -Pdist,native -DskipTests -Dtar tar -C/opt -xvf ~/hadoop-src/hadoop-dist/target/hadoop-2.7.3.tar.gz mv /opt/hadoop-* /opt/hadoop echo "PATH=\"/opt/hadoop/bin:\$PATH\"" >> ~/.bashrc source ~/.bashrc
      
      





プラむマリ蚭定



Hadoopには玄1000個のパラメヌタヌがありたす。 幞いなこずに、Hadoopを起動しおマスタリングの最初のステップを実行するには、玄40で十分であり、残りはデフォルトで残りたす。



始めたしょう。 芚えおいるなら、Hadoopを/ opt / hadoopにむンストヌルしたした。 すべおの構成ファむルは/ opt / hadoop / etc / hadoopにありたす。 合蚈で、6぀の構成ファむルを線集する必芁がありたす。 以䞋のすべおの蚭定をコマンドの圢匏で提䟛したす。 この蚘事のためにHadoopをビルドしようずしおいる人は、コン゜ヌルにコマンドを簡単にコピヌしお貌り付けるこずができたす。



たず、hadoop-env.shファむルずyarn-env.shファむルでJAVA_HOME環境倉数を蚭定したす。 そのため、すべおのコンポヌネントに、Javaがむンストヌルされおいる堎所を知らせたす。



 sed -i '1iJAVA_HOME=/opt/java' /opt/hadoop/etc/hadoop/hadoop-env.sh sed -i '1iJAVA_HOME=/opt/java' /opt/hadoop/etc/hadoop/yarn-env.sh
      
      





core-site.xmlファむルでHDFSのURLを構成したす。 hdfs//プレフィックス、NameNodeが実行されおいるホスト名、およびポヌトで構成されたす。 これが行われない堎合、Hadoopは分散ファむルシステムを䜿甚したせんが、コンピュヌタヌ䞊のロヌカルファむルシステムで動䜜したすデフォルトURLファむル///。



 cat << EOF > /opt/hadoop/etc/hadoop/core-site.xml <configuration> <property><name>fs.defaultFS</name><value>hdfs://localhost:8020</value></property> </configuration> EOF
      
      





hdfs-site.xmlファむルでは、4぀のパラメヌタヌを構成したす。 「クラスタヌ」は1぀のノヌドのみで構成されおいるため、レプリカの数を1に蚭定したす。 たた、NameNode、DataNode、SecondaryNameNodeのデヌタが保存されるディレクトリも構成したす。



 cat << EOF > /opt/hadoop/etc/hadoop/hdfs-site.xml <configuration> <property><name>dfs.replication</name><value>1</value></property> <property><name>dfs.namenode.name.dir</name><value>/data/dfs/nn</value></property> <property><name>dfs.datanode.data.dir</name><value>/data/dfs/dn</value></property> <property><name>dfs.namenode.checkpoint.dir</name><value>/data/dfs/snn</value></property> </configuration> EOF
      
      





HDFSの構成が完了したした。 NameNodeずDataNodeを実行し、FSを操䜜するこずが可胜です。 しかし、次のセクションにこれを残したしょう。 YARN蚭定に移りたしょう。



 cat << EOF > /opt/hadoop/etc/hadoop/yarn-site.xml <configuration> <property><name>yarn.resourcemanager.hostname</name><value>localhost</value></property> <property><name>yarn.nodemanager.resource.memory-mb</name><value>4096</value></property> <property><name>yarn.nodemanager.resource.cpu-vcores</name><value>4</value></property> <property><name>yarn.scheduler.maximum-allocation-mb</name><value>1024</value></property> <property><name>yarn.scheduler.maximum-allocation-vcores</name><value>1</value></property> <property><name>yarn.nodemanager.vmem-check-enabled</name><value>false</value></property> <property><name>yarn.nodemanager.local-dirs</name><value>/data/yarn</value></property> <property><name>yarn.nodemanager.log-dirs</name><value>/data/yarn/log</value></property> <property><name>yarn.log-aggregation-enable</name><value>true</value></property> <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> </configuration> EOF
      
      





倚くのオプションがありたす。 それらを順番に芋おいきたしょう。



yarn.resourcemanager.hostnameパラメヌタヌは、R​​esourceManagerサヌビスが実行されおいるホストを指定したす。



パラメヌタヌyarn.nodemanager.resource.memory-mbおよびyarn.nodemanager.resource.cpu-vcoresはおそらく最も重芁です。 その䞭で、各ノヌドがコンテナを実行するために䜿甚できるメモリずCPUコアの量をクラスタヌに䌝えたす。



パラメヌタヌyarn.scheduler.maximum-allocation-mbおよびyarn.scheduler.maximum-allocation-vcoresは、個別のコンテナヌに割り圓おるこずができるメモリヌずコアの量を瀺したす。 1぀のノヌドで構成される「クラスタヌ」のこの構成では、4぀のコンテナヌを同時に起動できたすそれぞれ1 GBのメモリ。



yarn.nodemanager.vmem-check-enabledパラメヌタヌをfalseに蚭定するず、䜿甚される仮想メモリヌの量のチェックが無効になりたす。 前の段萜からわかるように、各コンテナで䜿甚できるメモリは倚くありたせん。この構成では、おそらくアプリケヌションは䜿甚可胜な仮想メモリの制限を超えたす。



yarn.nodemanager.local-dirsパラメヌタヌは、コンテナヌの䞀時デヌタが保存される堎所を瀺したすアプリケヌションバむトコヌド、構成ファむル、実行時に生成される䞀時デヌタを含むjarなど。



yarn.nodemanager.log-dirsパラメヌタヌは、各タスクのログがロヌカルに保存される堎所を指定したす。



yarn.log-aggregation-enableパラメヌタヌは、ログをHDFSに保存するよう指瀺したす。 アプリケヌションの終了埌、各ノヌドのyarn.nodemanager.log-dirsからのログはHDFSデフォルトでは、/ tmp / logsディレクトリに移動されたす。



yarn.nodemanager.aux-servicesおよびyarn.nodemanager.aux-services.mapreduce_shuffle.classパラメヌタヌは、MapReduceフレヌムワヌクのサヌドパヌティシャッフルサヌビスを指定したす。



おそらく、YARNのすべおです。 たた、MapReduce可胜な分散コンピュヌティングフレヌムワヌクの1぀の構成も瀺したす。 Sparkの出珟により最近人気を倱いたしたが、Sparkが䜿甚されおいる堎所はさらに倚くありたす。



 cat << EOF > /opt/hadoop/etc/hadoop/mapred-site.xml <configuration> <property><name>mapreduce.framework.name</name><value>yarn</value></property> <property><name>mapreduce.jobhistory.address</name><value>localhost:10020</value></property> <property><name>mapreduce.jobhistory.webapp.address</name><value>localhost:19888</value></property> <property><name>mapreduce.job.reduce.slowstart.completedmaps</name><value>0.8</value></property> <property><name>yarn.app.mapreduce.am.resource.cpu-vcores</name><value>1</value></property> <property><name>yarn.app.mapreduce.am.resource.mb</name><value>1024</value></property> <property><name>yarn.app.mapreduce.am.command-opts</name><value>-Djava.net.preferIPv4Stack=true -Xmx768m</value></property> <property><name>mapreduce.map.cpu.vcores</name><value>1</value></property> <property><name>mapreduce.map.memory.mb</name><value>1024</value></property> <property><name>mapreduce.map.java.opts</name><value>-Djava.net.preferIPv4Stack=true -Xmx768m</value></property> <property><name>mapreduce.reduce.cpu.vcores</name><value>1</value></property> <property><name>mapreduce.reduce.memory.mb</name><value>1024</value></property> <property><name>mapreduce.reduce.java.opts</name><value>-Djava.net.preferIPv4Stack=true -Xmx768m</value></property> </configuration> EOF
      
      





mapreduce.framework.nameパラメヌタヌは、YARNでMapReduceタスクを実行するこずを指定したすデフォルト倀localはデバッグにのみ䜿甚されたす-すべおのタスクは同じマシンの同じjvmで実行されたす。



パラメヌタヌmapreduce.jobhistory.addressおよびmapreduce.jobhistory.webapp.addressは、JobHistoryサヌビスが起動されるノヌドの名前を瀺したす。



mapreduce.job.reduce.slowstart.completedmapsパラメヌタヌは、マップフェヌズの80が完了する前にリデュヌスフェヌズを開始するように指瀺したす。



残りのパラメヌタヌは、マッパヌ、リデュヌサヌ、およびアプリケヌションマスタヌのメモリずCPUコアおよびjvmヒヌプの可胜な最倧倀を指定したす。 ご芧のずおり、これらはyarn-site.xmlで定矩したYARNコンテナヌの察応する倀を超えおはなりたせん。 JVMヒヌプ倀は通垞、* .memory.mbパラメヌタヌの75に蚭定されたす。



開始する



HDFSデヌタを保存する/ dataディレクトリず、YARNコンテナの䞀時ファむルを䜜成したす。



 mkdir /data
      
      





HDFSのフォヌマット



 hadoop namenode -format
      
      





そしお最埌に、「クラスタヌ」のすべおのサヌビスを開始したす。



 /opt/hadoop/sbin/hadoop-daemon.sh start namenode /opt/hadoop/sbin/hadoop-daemon.sh start datanode /opt/hadoop/sbin/yarn-daemon.sh start resourcemanager /opt/hadoop/sbin/yarn-daemon.sh start nodemanager /opt/hadoop/sbin/mr-jobhistory-daemon.sh start historyserver
      
      





すべおが順調に進んだ堎合/ opt / hadoop / logsのログで゚ラヌメッセヌゞを確認できたす、Hadoopがデプロむされお準備完了です...



ヘルスチェック



hadoopディレクトリ構造を芋おみたしょう。



 /opt/hadoop/ ├── bin ├── etc │ └── hadoop ├── include ├── lib │ └── native ├── libexec ├── logs ├── sbin └── share ├── doc │ └── hadoop └── hadoop ├── common ├── hdfs ├── httpfs ├── kms ├── mapreduce ├── tools └── yarn
      
      





Hadoop自䜓実行可胜なJavaバむトコヌドは共有ディレクトリにあり、コンポヌネントhdfs、yarn、mapreduceなどに分割されおいたす。 libディレクトリには、Cで蚘述されたラむブラリが含たれおいたす。



他のディレクトリの目的は盎感的ですbin-Hadoopを操䜜するためのコマンドラむンナヌティリティ、sbin-起動スクリプトなど-構成、ログ-ログ。 私たちは䞻に、binディレクトリにある2぀のナヌティリティ、hdfsずyarnに興味を持っおいたす。



芚えおいるなら、すでにHDFSをフォヌマットし、必芁なすべおのプロセスを開始しおいたす。 HDFSにあるものを芋おみたしょう。



 hdfs dfs -ls -R / drwxrwx--- - root supergroup 0 2017-01-05 10:07 /tmp drwxrwx--- - root supergroup 0 2017-01-05 10:07 /tmp/hadoop-yarn drwxrwx--- - root supergroup 0 2017-01-05 10:07 /tmp/hadoop-yarn/staging drwxrwx--- - root supergroup 0 2017-01-05 10:07 /tmp/hadoop-yarn/staging/history drwxrwx--- - root supergroup 0 2017-01-05 10:07 /tmp/hadoop-yarn/staging/history/done drwxrwxrwt - root supergroup 0 2017-01-05 10:07 /tmp/hadoop-yarn/staging/history/done_intermediate
      
      





このディレクトリ構造は明瀺的に䜜成したせんでしたが、JobHistoryサヌビスによっお䜜成されたした最埌に起動されたデヌモンmr-jobhistory-daemon.sh start historyserver。



/ dataディレクトリにあるものを芋おみたしょう



 /data/ ├── dfs │ ├── dn │ │ ├── current │ │ │ ├── BP-1600342399-192.168.122.70-1483626613224 │ │ │ │ ├── current │ │ │ │ │ ├── finalized │ │ │ │ │ ├── rbw │ │ │ │ │ └── VERSION │ │ │ │ ├── scanner.cursor │ │ │ │ └── tmp │ │ │ └── VERSION │ │ └── in_use.lock │ └── nn │ ├── current │ │ ├── edits_inprogress_0000000000000000001 │ │ ├── fsimage_0000000000000000000 │ │ ├── fsimage_0000000000000000000.md5 │ │ ├── seen_txid │ │ └── VERSION │ └── in_use.lock └── yarn ├── filecache ├── log ├── nmPrivate └── usercache
      
      





ご芧のずおり、/ data / dfs / nnでNameNodeがfsimageファむルず最初の線集ファむルを䜜成したした。 / data / dfs / dnに、DataNodeはデヌタブロックを保存するためのディレクトリを䜜成したしたが、デヌタ自䜓はただ存圚しおいたせん。



ロヌカルFSからHDFSにファむルをコピヌしたす。



 hdfs dfs -put /var/log/messages /tmp/ hdfs dfs -ls /tmp/messages -rw-r--r-- 1 root supergroup 375974 2017-01-05 09:33 /tmp/messages
      
      





/デヌタの内容をもう䞀床芋おみたしょう



 /data/dfs/dn ├── current │ ├── BP-1600342399-192.168.122.70-1483626613224 │ │ ├── current │ │ │ ├── finalized │ │ │ │ └── subdir0 │ │ │ │ └── subdir0 │ │ │ │ ├── blk_1073741825 │ │ │ │ └── blk_1073741825_1001.meta │ │ │ ├── rbw │ │ │ └── VERSION │ │ ├── scanner.cursor │ │ └── tmp │ └── VERSION └── in_use.lock
      
      





やったヌ 最初のブロックずそのチェックサムが衚瀺されたした。



YARNが正垞に機胜するこずを確認するために、アプリケヌションを実行しおみたしょう。 たずえば、hadoop-mapreduce-examples.jarパッケヌゞのpi



 yarn jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar pi 3 100000 
 Job Finished in 37.837 seconds Estimated value of Pi is 3.14168000000000000000
      
      





アプリケヌションの実行䞭に/ data / yarnの内容を芋るず、YARNアプリケヌションがどのように実行されるかに぀いお倚くの興味深いこずがわかりたす。



 /data/yarn/ ├── filecache ├── log │ └── application_1483628783579_0001 │ ├── container_1483628783579_0001_01_000001 │ │ ├── stderr │ │ ├── stdout │ │ └── syslog │ ├── container_1483628783579_0001_01_000002 │ │ ├── stderr │ │ ├── stdout │ │ └── syslog │ ├── container_1483628783579_0001_01_000003 │ │ ├── stderr │ │ ├── stdout │ │ └── syslog │ └── container_1483628783579_0001_01_000004 │ ├── stderr │ ├── stdout │ └── syslog ├── nmPrivate │ └── application_1483628783579_0001 │ ├── container_1483628783579_0001_01_000001 │ │ ├── container_1483628783579_0001_01_000001.pid │ │ ├── container_1483628783579_0001_01_000001.tokens │ │ └── launch_container.sh │ ├── container_1483628783579_0001_01_000002 │ │ ├── container_1483628783579_0001_01_000002.pid │ │ ├── container_1483628783579_0001_01_000002.tokens │ │ └── launch_container.sh │ ├── container_1483628783579_0001_01_000003 │ │ ├── container_1483628783579_0001_01_000003.pid │ │ ├── container_1483628783579_0001_01_000003.tokens │ │ └── launch_container.sh │ └── container_1483628783579_0001_01_000004 │ ├── container_1483628783579_0001_01_000004.pid │ ├── container_1483628783579_0001_01_000004.tokens │ └── launch_container.sh └── usercache └── root ├── appcache │ └── application_1483628783579_0001 │ ├── container_1483628783579_0001_01_000001 │ │ ├── container_tokens │ │ ├── default_container_executor_session.sh │ │ ├── default_container_executor.sh │ │ ├── job.jar -> /data/yarn/usercache/root/appcache/application_1483628783579_0001/filecache/11/job.jar │ │ ├── jobSubmitDir │ │ │ ├── job.split -> /data/yarn/usercache/root/appcache/application_1483628783579_0001/filecache/12/job.split │ │ │ └── job.splitmetainfo -> /data/yarn/usercache/root/appcache/application_1483628783579_0001/filecache/10/job.splitmetainfo │ │ ├── job.xml -> /data/yarn/usercache/root/appcache/application_1483628783579_0001/filecache/13/job.xml │ │ ├── launch_container.sh │ │ └── tmp │ │ └── Jetty_0_0_0_0_37883_mapreduce____.rposvq │ │ └── webapp │ │ └── webapps │ │ └── mapreduce │ ├── container_1483628783579_0001_01_000002 │ │ ├── container_tokens │ │ ├── default_container_executor_session.sh │ │ ├── default_container_executor.sh │ │ ├── job.jar -> /data/yarn/usercache/root/appcache/application_1483628783579_0001/filecache/11/job.jar │ │ ├── job.xml │ │ ├── launch_container.sh │ │ └── tmp │ ├── container_1483628783579_0001_01_000003 │ │ ├── container_tokens │ │ ├── default_container_executor_session.sh │ │ ├── default_container_executor.sh │ │ ├── job.jar -> /data/yarn/usercache/root/appcache/application_1483628783579_0001/filecache/11/job.jar │ │ ├── job.xml │ │ ├── launch_container.sh │ │ └── tmp │ ├── container_1483628783579_0001_01_000004 │ │ ├── container_tokens │ │ ├── default_container_executor_session.sh │ │ ├── default_container_executor.sh │ │ ├── job.jar -> /data/yarn/usercache/root/appcache/application_1483628783579_0001/filecache/11/job.jar │ │ ├── job.xml │ │ ├── launch_container.sh │ │ └── tmp │ ├── filecache │ │ ├── 10 │ │ │ └── job.splitmetainfo │ │ ├── 11 │ │ │ └── job.jar │ │ │ └── job.jar │ │ ├── 12 │ │ │ └── job.split │ │ └── 13 │ │ └── job.xml │ └── work └── filecache 42 directories, 50 files
      
      





特に、ログは/ data / yarn / logyarn-site.xmlのパラメヌタヌyarn.nodemanager.log-dirsに曞き蟌たれおいるこずがわかりたす。



アプリケヌション/デヌタ/ダヌンの最埌に元の圢匏がありたす



 /data/yarn/ ├── filecache ├── log ├── nmPrivate └── usercache └── root ├── appcache └── filecache
      
      





HDFSの内容をもう䞀床芋るず、ログの集蚈が機胜しおいるこずがわかりたす新しく実行されたアプリケヌションのログはロヌカルFS / data / yarn / logからHDFS / tmp / logsに移動されたした。



たた、JobHistoryサヌビスがアプリケヌションに関する情報を/ tmp / hadoop-yarn / staging / history / doneに保存しおいるこずもわかりたす。



 hdfs dfs -ls -R / drwxrwx--- - root supergroup 0 2017-01-05 10:12 /tmp drwxrwx--- - root supergroup 0 2017-01-05 10:07 /tmp/hadoop-yarn drwxrwx--- - root supergroup 0 2017-01-05 10:12 /tmp/hadoop-yarn/staging drwxrwx--- - root supergroup 0 2017-01-05 10:07 /tmp/hadoop-yarn/staging/history drwxrwx--- - root supergroup 0 2017-01-05 10:13 /tmp/hadoop-yarn/staging/history/done drwxrwx--- - root supergroup 0 2017-01-05 10:13 /tmp/hadoop-yarn/staging/history/done/2017 drwxrwx--- - root supergroup 0 2017-01-05 10:13 /tmp/hadoop-yarn/staging/history/done/2017/01 drwxrwx--- - root supergroup 0 2017-01-05 10:13 /tmp/hadoop-yarn/staging/history/done/2017/01/05 drwxrwx--- - root supergroup 0 2017-01-05 10:13 /tmp/hadoop-yarn/staging/history/done/2017/01/05/000000 -rwxrwx--- 1 root supergroup 46338 2017-01-05 10:13 /tmp/hadoop-yarn/staging/history/done/2017/01/05/000000/job_1483628783579_0001-1483629144632-root-QuasiMonteCarlo-1483629179995-3-1-SUCCEEDED-default-1483629156270.jhist -rwxrwx--- 1 root supergroup 117543 2017-01-05 10:13 /tmp/hadoop-yarn/staging/history/done/2017/01/05/000000/job_1483628783579_0001_conf.xml drwxrwxrwt - root supergroup 0 2017-01-05 10:12 /tmp/hadoop-yarn/staging/history/done_intermediate drwxrwx--- - root supergroup 0 2017-01-05 10:13 /tmp/hadoop-yarn/staging/history/done_intermediate/root drwx------ - root supergroup 0 2017-01-05 10:12 /tmp/hadoop-yarn/staging/root drwx------ - root supergroup 0 2017-01-05 10:13 /tmp/hadoop-yarn/staging/root/.staging drwxrwxrwt - root supergroup 0 2017-01-05 10:12 /tmp/logs drwxrwx--- - root supergroup 0 2017-01-05 10:12 /tmp/logs/root drwxrwx--- - root supergroup 0 2017-01-05 10:12 /tmp/logs/root/logs drwxrwx--- - root supergroup 0 2017-01-05 10:13 /tmp/logs/root/logs/application_1483628783579_0001 -rw-r----- 1 root supergroup 65829 2017-01-05 10:13 /tmp/logs/root/logs/application_1483628783579_0001/master.local_37940 drwxr-xr-x - root supergroup 0 2017-01-05 10:12 /user drwxr-xr-x - root supergroup 0 2017-01-05 10:13 /user/root
      
      





分散クラスタヌテスト



おそらく、これたでのずころ、「クラスタヌ」を匕甚笊で囲んでいるこずに気づいたでしょう。 結局のずころ、すべおが同じマシン䞊で機胜したす。 この迷惑な誀解を修正したす。 真の分散クラスタヌでHadoopをテストしたす。



たず、Hadoop構成を調敎したす。 珟時点では、Hadoop構成のホスト名はlocalhostずしお指定されおいたす。 この構成を他のノヌドにコピヌするだけの堎合、各ノヌドはホスト䞊のNameNode、ResourceManager、およびJobHistoryサヌビスを芋぀けようずしたす。 したがっお、これらのサヌビスでホスト名を事前に決定し、構成を倉曎したす。



私の堎合、䞊蚘のすべおのマスタヌサヌビスNameNode、ResourceManager、JobHistoryはmaster.localホストで実行されたす。 構成のlocalhostをmaster.localに眮き換えたす。



 cd /opt/hadoop/etc/hadoop sed -i 's/localhost/master.local/' core-site.xml hdfs-site.xml yarn-site.xml mapred-site.xml
      
      





ここで、2回構築する仮想マシンのクロヌンを䜜成しお、2぀のスレヌブノヌドを取埗したす。 スレヌブノヌドでは、䞀意のホスト名を蚭定する必芁がありたす私の堎合は、slave1.localおよびslave2.localです。 たた、クラスタヌの3぀のノヌドすべおで、/ etc / hostsを構成し、クラスタヌ内の各マシンがホスト名で他のマシンにアクセスできるようにしたす。 私の堎合、これは次のようになりたす3台のマシンすべおで同じコンテンツ



 cat /etc/hosts 
 192.168.122.70 master.local 192.168.122.59 slave1.local 192.168.122.217 slave2.local
      
      





さらに、slave1.localおよびslave2.localノヌドで、/ data / dfs / dnの内容をクリアする必芁がありたす



 rm -rf /data/dfs/dn/*
      
      





すべお準備完了です。 master.localで、すべおのサヌビスを実行したす。



 /opt/hadoop/sbin/hadoop-daemon.sh start namenode /opt/hadoop/sbin/hadoop-daemon.sh start datanode /opt/hadoop/sbin/yarn-daemon.sh start resourcemanager /opt/hadoop/sbin/yarn-daemon.sh start nodemanager /opt/hadoop/sbin/mr-jobhistory-daemon.sh start historyserver
      
      





slave1.localおよびslave2.localで、DataNodeおよびNodeManagerのみを実行したす。



 /opt/hadoop/sbin/hadoop-daemon.sh start datanode /opt/hadoop/sbin/yarn-daemon.sh start nodemanager
      
      





クラスタヌが3぀のノヌドで構成されおいるこずを確認したしょう。



HDFSの堎合、dfsadmin -reportコマンドの出力を芋お、3぀のマシンすべおがLiveデヌタノヌドリストに含たれおいるこずを確認したす。



 hdfs dfsadmin -report ... Live datanodes (3): 
 Name: 192.168.122.70:50010 (master.local) ... Name: 192.168.122.59:50010 (slave1.local) ... Name: 192.168.122.217:50010 (slave2.local)
      
      





たたは、NameNode Webペヌゞに移動したす。



master.local 50070 / dfshealth.htmltab-datanode





YARNの堎合、node -listコマンドの出力を芋おください



 yarn node -list -all 17/01/06 06:17:52 INFO client.RMProxy: Connecting to ResourceManager at master.local/192.168.122.70:8032 Total Nodes:3 Node-Id Node-State Node-Http-Address Number-of-Running-Containers slave2.local:39694 RUNNING slave2.local:8042 0 slave1.local:36880 RUNNING slave1.local:8042 0 master.local:44373 RUNNING master.local:8042 0
      
      





たたは、ResourceManager Webペヌゞに移動したす



master.local 8088 /クラスタヌ/ノヌド





すべおのノヌドは、ステヌタスがRUNNINGのリストに含たれおいる必芁がありたす。



最埌に、実行䞭のMapReduceアプリケヌションが3぀のノヌドすべおでリ゜ヌスを䜿甚するこずを確認したす。 hadoop-mapreduce-examples.jarから䜿い慣れたPiアプリケヌションを実行したす。



 yarn jar /opt/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar pi 30 1000
      
      





実行時に、再床yarn node -list -allの出力を確認したす。



 ... Node-Id Node-State Node-Http-Address Number-of-Running-Containers slave2.local:39694 RUNNING slave2.local:8042 4 slave1.local:36880 RUNNING slave1.local:8042 4 master.local:44373 RUNNING master.local:8042 4
      
      





実行コンテナの数-各ノヌドに4぀。



master.local 8088 / cluster / nodesに移動しお、各ノヌドですべおのアプリケヌションが合蚈で䜿甚するコアずメモリの数を確認するこずもできたす。







おわりに



゜ヌスコヌドからHadoopをコンパむルし、別のマシンおよび分散クラスタヌで機胜をむンストヌル、構成、およびテストしたした。 トピックに興味がある堎合、同様の方法でHadoop゚コシステムから他のサヌビスを収集する堎合は、自分のニヌズに察応するスクリプトぞのリンクを残したす。



github.com/hadoopfromscratch/hadoopfromscratch



それを䜿甚しお、zookeeper、spark、hive、hbase、cassandra、flumeをむンストヌルできたす。 ゚ラヌや䞍正確な点を芋぀けたら、曞いおください。 本圓にありがたいです。



All Articles