機械学習、データマイニング、その他のビッグデータ処理は、さまざまなオープンソース分散システムと切り離せません。 Hadoop は分散ストレージとマップリデュースコンピューティングに使用され、Spark は分散機械学習に使用され、Hive は分散データベースであり、HBase は分散 KV システムです。関連性がないように見えますが、すべて同じ HDFS ストレージと YARN リソース管理に基づいています。この記事では、一連のデプロイメント方法を使用して、誰もがシステムを深く理解し、分散システムのアーキテクチャとそれらの関係を完全に理解できるようにします。この記事は比較的長く、要点は最後にあります。 記事の構成まず、Hadoop、HBase、Hive、Spark のセットをそれぞれデプロイしてみましょう。展開方法を説明する過程で、いくつかの重要な構成について特に説明し、理解を助けるアーキテクチャ図もいくつか示して、その後のシステム アーキテクチャと関係性の説明の基礎を築きます。 その後、いくつかのプログラムを実行してこれらのシステムの機能を分析します。 最後に、これらのシステムの関係をまとめます。 分散型Hadoopデプロイメント
Hadoop はいくつかの部分に分かれています。YARN はリソースとタスクの管理を担当し、HDFS は分散ストレージを担当し、Map-Reduce は分散コンピューティングを担当します。 まず、yarn のアーキテクチャを理解しましょう。 yarn には、リソース管理とタスク スケジューリングの 2 つの部分があります。 リソース管理には、グローバル ResourceManager (RM) と各マシンに分散された NodeManager が連携して動作する必要があります。 RM はリソースの調停を担当し、NodeManager は各ノードのリソース監視、ステータス報告、コンテナ管理を担当します。 タスクのスケジュール設定では、ResourceManager がタスクの受け入れとスケジュール設定を担当する必要もあります。タスクのスケジューリングでは、コンテナ内で起動された ApplicationMaster (AM) がタスクの管理を担当します。タスクにリソースが必要な場合は、RM に適用され、割り当てられたコンテナを使用してタスクが開始されます。次に、AM はこれらのコンテナーと通信します。 AM および特定のタスクはコンテナ内で実行されます。 YARN は、第一世代の Hadoop デプロイメント (namenode、jobtracker、tasktracker) とは異なります。 次に、HDFS アーキテクチャを見てみましょう。HDFS 部分は、NameNode、SecondaryNameNode、および DataNode で構成されています。 DataNode は、各ストレージ ノード上のデータを実際に管理するモジュールです。 NameNode は、グローバルデータの名前情報を管理するモジュールです。 SecondaryNameNode はクラッシュを防ぐためのスレーブ ノードです。 最後に、map-reduce について説明します。map-reduce は yarn と hdfs に依存します。タスクの実行履歴を表示するための JobHistoryServer もあります。 hadoop には個別にデプロイされた複数のモジュールがありますが、必要なプログラムはすべて同じ tarball に含まれているため、異なるモジュールで使用される構成ファイルはすべて一緒になっています。最も重要な設定ファイルのいくつかを見てみましょう。
これらの構成ファイルから、Hadoop の主要部分が個別に構成されていることもわかります。 上記に加えて、いくつかの重要な構成があります。hadoop-env.sh、mapred-env.sh、yarn-env.shは、プログラムの実行時にJava仮想マシンのパラメータを構成するために使用されます。また、バイナリ、構成、ログ、その他のディレクトリ構成も構成されます。 次に、変更する必要がある構成ファイルを実際に変更します。 etc/hadoop/core-site.xml を変更し、構成を次のように変更します。 ここでの設定は、hdfsのファイルシステムアドレス:ローカルマシンのポート9001です。 etc/hadoop/hdfs-site.xml を変更し、構成を次のように変更します。 これは、HDFSファイルがローカルに保存される場所とセカンダリネームノードのアドレスを構成します。 etc/hadoop/yarn-site.xml を変更し、構成を次のように変更します。 ここでの設定は、yarnのログアドレスといくつかのパラメータ設定です。 cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml で etc/hadoop/mapred-site.xml を作成し、内容を次のように変更します。 ここでの設定は、mapredのタスク履歴関連の設定です。 Hadoop が複数のマシンにデプロイされている場合は、etc/hadoop/slaves を変更し、他のスレーブ マシンの IP アドレスを追加する必要があります。この 1 台のマシンにのみデプロイされている場合は、localhost のままにしておきます。 次に、hadoop を起動します。始める前に、必要な環境変数を設定します。 まず hdfs を起動します。その前に、分散ファイルシステムをフォーマットして、以下を実行する必要があります。 フォーマットが正常であれば、/data/apache/dfsの下にnameディレクトリが生成されていることがわかります。 次に、ネームノードを起動して実行します。 正常に起動すると、対応するプロセスが開始され、対応するログがログディレクトリに生成されることがわかります。 次に、データノードを起動して実行します。 セカンダリ ネームノードを起動することを検討する場合も、同じ方法で起動できます。 次に、yarn を起動し、まず resourcemanager を起動して、次を実行します。 正常に起動すると、対応するプロセスが開始され、対応するログがログディレクトリに生成されることがわかります。 次に、ノードマネージャを起動して、次を実行します。 正常に起動すると、対応するプロセスが開始され、対応するログがログディレクトリに生成されることがわかります。 次に、MapReduce JobHistory Server を起動し、以下を実行します。 正常に起動すると、対応するプロセスが開始され、対応するログがログディレクトリに生成されることがわかります。 次に、Webインターフェースを見てみましょうyarn によって管理されているクラスター リソースを表示するには、http://127.0.0.1:8088/cluster を開きます (yarn-site.xml で yarn.resourcemanager.webapp.address を 127.0.0.1:8088 に設定しているため)。 http://127.0.0.1:19888/jobhistory を開いて、map-reduce タスクの実行履歴を表示します (mapred-site.xml で mapreduce.jobhistory.webapp.address を 127.0.0.1:19888 に設定しているため) http://127.0.0.1:50070/dfshealth.html を開いて、namenode のストレージ システムの状態を確認します (hdfs-site.xml で dfs.namenode.http-address を 127.0.0.1:50070 に設定しているため) これまでのところ、Hadoop の導入は完了しています。 Hadoop の機能をテストしてみましょう。 まず、hdfs 分散ファイルシステムを確認し、次のコマンドを実行して出力があるかどうかを確認します。 現時点では、http://127.0.0.1:50070/dfshealth.html を通じてストレージ システムの変更を確認できます。 次に、入力を入力としてmapreduceタスクを開始します。 次に、/output の出力が生成されているかどうかを確認します。 現時点では、http://127.0.0.1:19888/jobhistory を通じて mapreduce タスクの履歴を確認できます。 タスク履歴は http://127.0.0.1:8088/cluster でも確認できます。 なぜ両方の場所に歴史があるのでしょうか?それらの違いは何ですか? クラスターが実際に各アプリケーションの履歴情報を表示していることがわかります。 yarn (ResourceManager) の管理ページです。つまり、mapreduce であろうと、mapreduce に類似した他のタスクであろうと、ここに表示されます。 mapreduce タスクのアプリケーション タイプは MAPREDUCE であり、その他のタスクのタイプは other です。ただし、jobhistory は特に mapreduce タスクを表示するために使用されます。 hbaseの展開まず、http://www.apache.org/dyn/closer.cgi/hbase/ から安定バージョンのインストール パッケージをダウンロードします。 https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/stable/hbase-1.2.2-bin.tar.gzをダウンロードしました 解凍後、conf/hbase-site.xml を次のように変更します。 hbase.rootdir 構成は hdfs アドレスであり、ip:port は hadoop/core-site.xml の fs.defaultFS と一致している必要があります。 hbase.zookeeper.quorum は zookeeper のアドレスです。複数のアドレスを設定できます。テストには 1 つのアドレスのみを使用します。 hbase を起動して実行します: ローカル マシンのパスワードの入力を求められる場合があります。 起動が成功すると、zookeeper の HQuorumPeer、hbase の HMaster および HRegionServer など、いくつかのプロセスが起動しているのがわかります。 次に、hbase の使用をテストして実行します。 テーブルを作成する テーブルを予約する 行を追加 すべて読む また、hdfs に追加の hbase ストレージ ディレクトリがあることもわかります。 これは、HBase がストレージ メディアとして HDFS を使用しているため、分散ストレージのすべての利点を備えていることを示しています。 hbase のアーキテクチャは次のとおりです。 HMaster は、負荷分散を実現するための HRegionServer の管理、HRegion (データ シャード) の管理と割り当て、名前空間とテーブル メタデータの管理、および権限の制御を担当します。 HRegionServer は、ローカル HRegion の管理、データの管理、および HDFS とのやり取りを担当します。 Zookeeperは、クラスタの調整(HMasterのマスタースレーブフェイルオーバーなど)とクラスタステータス情報の保存を担当します。 クライアントはHRegionServerと通信するためにデータを直接送信します Hive の展開http://mirrors.hust.edu.cn/apache/hive からインストール パッケージをダウンロードします。 http://mirrors.hust.edu.cn/apache/hive/stable-2/apache-hive-2.1.0-bin.tar.gz からパッケージをダウンロードしました。 解凍後、まず hdfs を準備して実行します。 Hive を使用するには、ストレージとして HDF を自動的に検出できるように、事前に HADOOP_HOME 環境変数を設定する必要があります。次のようなさまざまな HOME と PATH を設定してみましょう。 hive-site.xml、hive-log4j2.properties、hive-exec-log4j2.propertiesをコピーして作成し、実行します。 hive-site.xml を変更し、${system:java.io.tmpdir} を /data/apache/tmp に変更します。独自の tmp ディレクトリを設定し、${system:user.name} をユーザー名に置き換えることもできます。 メタデータ データベースを初期化します (デフォルトでは、ローカルの Derby データベースに保存されますが、mysql として構成することもできます)。最初に hive コマンドを実行しないでください。そうしないと、この手順は失敗します。詳細については、http://stackoverflow.com/questions/35655306/hive-installation-issues-hive-metastore-database-is-not-initialized を参照してください。次のように実行します。 成功したら、次のようにして Hive をクライアントとして直接起動できます。 データベースを作成してみてください: この場合、まだスタンドアロン ハイブがあり、他のマシンからログインできないため、サーバーとして起動する必要があります。 デフォルトでは、ポート10000をリッスンします。その後、jdbcクライアントを介してこのサービスに接続し、hiveにアクセスできます。 ここではハイブの具体的な使用法については説明しません Spark のデプロイメントまず、http://spark.apache.org/downloads.html から指定された hadoop バージョンのインストール パッケージをダウンロードします。 http://d3kbcqa49mib13.cloudfront.net/spark-2.0.0-bin-hadoop2.7.tgz からインストール パッケージをダウンロードしました。 Spark はさまざまな方法で導入できます。まず、サンプル プログラムを実行するなど、単一のマシン上で直接実行することをサポートします。 直接実行して結果を得ることができます 次に、Spark クラスターの展開方法について説明します。 インストール パッケージを解凍した後、直接実行します。 この時点で、http://127.0.0.1:8080/ を開くと、次のような Web インターフェイスが表示されます。 上記の URL: spark://MYAY:7077 に従って、スレーブを再度起動します。 次のようにして Web インターフェイスを更新します。 ワーカーが表示され、必要に応じて複数のワーカーを起動できます。 次に、上記で実行したタスクを Spark クラスターにデプロイして実行します。 Web インターフェースは次のとおりです。 Spark プログラムは、実行のために yarn クラスターにデプロイすることもできます。これは、hadoop をデプロイしたときに開始した yarn です。 次のように、事前に HADOOP_CONF_DIR を設定する必要があります。 次に、タスクを Yarn クラスターにデプロイします。 総括する
つまり、各システムはそれぞれの部分を担当し、同時に相互に依存して Hadoop エコシステム全体を形成します。 |
<<: アーカイブ、バックアップ、災害復旧を通じてマルチクラウドデータ保護を実現する方法
>>: if-else のネストが深すぎますか?初心者でもマスターできるデザインパターンを教えます!
iPhoneのショートカットキー操作をフォーラムやインターネットから収集して分類しています。iPho...
ウェブサイト - ウェブサイトの略。ほとんどの人は、Web サイトを何千もの Web ページを含むコ...
クラウド コンピューティングと仮想化は互換性のある用語ではなく、IT 環境、システム、またはネットワ...
最も安い VPS は、誰もが常に探して購入しています。動的で最も安い VPS、米国で最も安い VPS...
LiveNet Sp. z oo傘下で2009年に設立されたポーランドの会社、SlaskDatace...
ブログは注目度が低下しているウェブサイトの一種であり、ユーザーの定着率が低いという結果が出ていますが...
当初は cn ドメイン名や com ドメイン名など、いくつかのドメイン名を登録しました。当初、私はc...
今日のインターネットは、合併や買収が絶えない時代、あるいは寡占の時代とも言えます。競争が激化する中で...
最近、国家ポルノおよび違法出版物取締局、中国サイバースペース管理局、工業情報化部、公安部などの部門は...
かつて、周洪義という偉大な人物が、ユーザー エクスペリエンスに関する独自の見解を次のように表現しまし...
1. OpenVZ OpenVZ (略して OVZ) は、SWsoft の Virutozzo 仮想...
ウェブサイトの最適化やオンライン マーケティングを行う際には、トラフィックは複数のチャネルから来るべ...
昨日(4月29日)、ジョインタウンは2013年度の年次報告書を発表し、テンセントとの数か月にわたる提...
先月、Google はひそかにすべての自然検索結果を暗号化し、GA の Google/オーガニック自...
Dell は本日、エッジ コンピューティングからコア データ センター、クラウド コンピューティング...