Hadoop分散クラスタを構築し、ビッグデータに取り組む方法を教えます

Hadoop分散クラスタを構築し、ビッグデータに取り組む方法を教えます

いよいよビッグデータで遊び始めます。以前はhaoopエコシステムについてあまり知りませんでしたが、今ではそれをデータセンターとして完全に使用する必要があります。これはhaoopに関する最初の記事です。今後はビッグデータ関連の記事をたくさん書くことになると思います。

Hadoop を構築するには 3 つの方法があります。スタンドアロン バージョンは開発とデバッグに適しています。疑似分散バージョンはクラスター学習のシミュレーションに適しています。完全に分散されたバージョンが本番環境で使用されます。このドキュメントでは、1 つのマスター ノードと 3 つのデータ ノードを例として、完全に分散された Hadoop クラスターを構築する方法について説明します。

[[212522]]

基本環境

環境の準備

1. ソフトウェアバージョン

  • 4 台のサーバーは、次のシステムで構成されています: centos6.5、メモリ: 1G、ハードディスク: 20G
  • 4 つのサーバーに割り当てられた IP アドレス: 192.168.0.71/72/73/74
  • 計画: 71 はマスターノードと hadoop-master として使用され、他の 3 つはデータノード 72、73、74 は hadoop-salve1~3 として使用されます。

jdkとビルドは一致しているので、バージョン1.7を使用してください。

  • Hadoop はバージョン 2.7.3 を使用します。ダウンロード アドレス: http://apache.claz.org/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz

2. ホスト構成とホスト名(4台のマシン)

4つのサーバーのホストファイルを変更する

  1. vim /etc/hosts  
  2. 192.168.0.71 hadoopマスター 
  3. 192.168.0.72 hadoop-スレーブ1  
  4. 192.168.0.73 hadoop-スレーブ2  
  5. 192.168.0.74 スレーブ3

サーバーのホスト名を例に挙げます: HOSTNAME, master

  1. vi /etc/sysconfig/ネットワーク 
  2. ホスト名=hadoop-master

変更は再起動後に有効になります。再起動が完了したら、他のスレーブ サーバーの名前を hadoop-slave1~3 に変更します。

3. サーバーにJDKをインストールする(サーバー4台)

jdkをインストールするにはyumを使用することをお勧めしますが、自分でダウンロードしてインストールすることもできます。

  1. yum -y インストール java-1.7.0-openjdk*

環境変数を設定し、設定ファイルvim /etc/profileを変更します。

  1. JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64 をエクスポートします。  
  2. PATH=$JAVA_HOME/bin:$PATH をエクスポートします 
  3. エクスポート CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar

すぐに有効にするにはソースコマンドを使用してください

  1. ソース /etc/profile

パスワード不要のログイン

1. まず、4台のサーバーのファイアウォールとSELINUXをオフにします

ファイアウォールの状態を確認する

  1. サービス iptables ステータス

ファイアウォールをオフにする

  1. サービスiptables停止 
  2. chkconfig iptablesオフ 

SELINUXを無効にした後、サーバーを再起動する必要があります。

  1. -- SELINUXを無効にする   
  2. # vim /etc/selinux/config  
  3. -- コメントアウト   
  4. #SELINUX=強制 
  5. #SELINUXTYPE=対象 
  6. - に追加   
  7. SELINUX=無効

2. パスワードなしでマシンにログインする

以下では、ローカル hadoop-master のパスワードなしログインの構成を例に説明します。ユーザーは、ローカルの 3 つの子ノード マシン h-salve1 ~ 3 へのパスワードなしのログインを完了するには、以下の手順に従う必要があります。

1) 生産キー

  1. ssh-keygen -t rsa

2) 公開鍵を「authorized_keys」ファイルに追加します。

  1. cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys

3) 権限を付与する

  1. chmod 600 .ssh/承認済みキー

4) パスワードなしでマシンにアクセスできることを確認する

  1. ssh hadoopマスター

***、h-salve1~3のパスワードフリーアクセスを順番に設定します

2. ローカルマシン上の hadoop-slave1、hadoop-slave2、hadoop-slave3 にパスワードなしでログインします。例として、hadoop-master がパスワードなしで hadoop-slave1 にログインする場合を考えます。

1) hadoop-slave1 にログインし、hadoop-master サーバーの公開鍵「id_rsa.pub」を hadoop-slave1 サーバーの「root」ディレクトリにコピーします。

  1. scp root@hadoop-master:/root/.ssh/id_rsa.pub /root/

2) hadoop-masterの公開鍵(id_rsa.pub)をhadoop-slave1のauthorized_keysに追加します。

  1. cat id_rsa.pub >> .ssh/authorized_keys  
  2. rm -rf id_rsa.pub

3) hadoop-masterでテストする

  1. ssh hadoop-スレーブ1

3. hadoop-slave1~hadoop-slave3を設定して、パスワードなしでhadoop-masterにログインできるようにします。

次の例では、hadoop-slave1 を使用して、パスワードなしで hadoop-master にログインします。ユーザーは、次の手順を参照して、hadoop-slave2~hadoop-slave3 を完了し、パスワードなしで hadoop-master にログインする必要があります。

1) hadoop-master にログインし、hadoop-slave1 サーバーの公開鍵「id_rsa.pub」を hadoop-master サーバーの「/root/」ディレクトリにコピーします。

  1. scp root@hadoop-slave1:/root/.ssh/id_rsa.pub /root/

2) hadoop-slave1 の公開鍵 (id_rsa.pub) を hadoop-master の authorized_keys に追加します。

  1. cat id_rsa.pub >> .ssh/authorized_keys  
  2. rm -rf id_rsa.pub //id_rsa.pub を削除

3) hadoop-slave1でテストする

  1. ssh hadoop マスター

hadoop-slave2とhadoop-slave3を順番に設定する

この時点で、マスターとスレーブのパスワードなしのログインが完了しました。

Hadoop環境構築

hadoop-masterのhadoop環境を設定する

1. インストールパッケージを解凍し、hadoop-masterに基本ディレクトリを作成します。

  1. #ダウンロード 
  2. http://apache.claz.org/hadoop/common/hadoop-2.7.3/hadoop-2.7.3.tar.gz を取得します。  
  3. #解凍 
  4. tar -xzvf hadoop-2.7.3.tar.gz -C /usr/ローカル   
  5. #名前の変更 
  6. mv hadoop-2.7.3 hadoop

2. hadoop-masterのhadoop環境変数を設定する

1) 環境変数を設定し、設定ファイルvi /etc/profileを変更します。

  1. HADOOP_HOME=/usr/ローカル/hadoopをエクスポートします。  
  2. PATH=$PATH:$HADOOP_HOME/bin をエクスポートします。

現在のターミナルでhadoopコマンドをすぐに有効にする

  1. ソース /etc/profile

以下のように設定してください。すべてのファイルは /usr/local/hadoop/etc/hadoop パスにあります。

2. core-site.xmlを構成する

Hadoop コア構成ファイル /usr/local/hadoop/etc/hadoop/core-site.xml を変更し、fs.default.name を通じて NameNode の IP アドレスとポート番号を指定し、hadoop.tmp.dir を通じて Hadoop データ ストレージの一時フォルダーを指定します。

  1. <構成>  
  2. <プロパティ>  
  3. <名前>hadoop.tmp.dir</名前>  
  4. <値>ファイル:/usr/ローカル/hadoop/tmp</値>  
  5. <description>他の一時ディレクトリベース。</description>  
  6. </プロパティ>  
  7. <プロパティ>  
  8. <名前>fs.defaultFS</名前>  
  9. <値>hdfs://hadoop-master:9000</値>  
  10. </プロパティ>  
  11. </構成>

特記事項: hadoop.tmp.dir パラメータが設定されていない場合、システムのデフォルトの一時ディレクトリは /tmp/hadoo-hadoop になります。このディレクトリは再起動のたびに削除されるため、フォーマットを再実行する必要があります。そうしないとエラーが発生します。

3. hdfs-site.xml を設定します。

HDFS コア構成ファイル /usr/local/hadoop/etc/hadoop/hdfs-site.xml を変更し、dfs.replication で HDFS バックアップ係数を 3 に指定し、dfs.name.dir でネームノード ノードのファイル ストレージ ディレクトリを指定し、dfs.data.dir でデータノード ノードのファイル ストレージ ディレクトリを指定します。

  1. <構成>  
  2. <プロパティ>  
  3. <名前>dfs.replication</名前>  
  4. <値>3</値>  
  5. </プロパティ>  
  6. <プロパティ>  
  7. <名前>dfs。名前.dir</名前>  
  8. <値>/usr/ローカル/hadoop/hdfs/</値>  
  9. </プロパティ>  
  10. <プロパティ>  
  11. <名前>dfs.data.dir</名前>  
  12. <値>/usr/ローカル/hadoop/hdfs/data</値>  
  13. </プロパティ>  
  14. </構成>

4. mapred-site.xml を構成する

mapred-site.xml.templateをmapred-site.xmlにコピーして修正する

  1. cp /usr/ローカル/hadoop/etc/hadoop/mapred-site.xml.template /usr/ローカル/hadoop/etc/hadoop/mapred-site.xml  
  2. vim /usr/ローカル/hadoop/etc/hadoop/mapred-site.xml  
  3. <構成>  
  4. <プロパティ>  
  5. <名前>mapreduce.framework。名前</名前>  
  6. <value>糸</value>  
  7. </プロパティ>  
  8. <プロパティ>  
  9. <名前>mapred.job.tracker</名前>  
  10. <値>http://hadoop-master:9001</値>  
  11. </プロパティ>  
  12. </構成>

5. yarn-site.xml を設定する

  1. <構成>  
  2. <! -- サイト固有の YARN 構成プロパティ -->    
  3. <プロパティ>  
  4. <名前>yarn.nodemanager.aux-services</名前>  
  5. <値>mapreduce_shuffle</値>  
  6. </プロパティ>  
  7. <プロパティ>  
  8. <名前>yarn.resourcemanager.hostname</名前>  
  9. <値>hadoop マスター</値>  
  10. </プロパティ>  
  11. </構成>

6. マスターファイルを構成する

namenode ノードが配置されているサーバー マシンを指定する /usr/local/hadoop/etc/hadoop/masters ファイルを変更します。 localhost を削除し、namenode ノードのホスト名 hadoop-master を追加します。 IP アドレスは変更される可能性がありますが、ホスト名は通常変更されないため、IP アドレスの使用はお勧めしません。

  1. vi /usr/ローカル/hadoop/etc/hadoop/masters  
  2. ## コンテンツ 
  3. hadoopマスター

7. スレーブファイルを構成する(マスターホスト固有)

どのサーバーノードがデータノードノードであるかを指定する /usr/local/hadoop/etc/hadoop/slaves ファイルを変更します。 locahost を削除し、以下に示すようにすべてのデータノードのホスト名を追加します。

  1. vi /usr/ローカル/hadoop/etc/hadoop/slaves  
  2. ## コンテンツ 
  3. hadoop スレーブ1  
  4. hadoop スレーブ2  
  5. hadoop スレーブ3

hadoop-slaveのhadoop環境を設定する

以下では、hadoop-slave1 上の hadoop の構成を例として説明します。他の hadoop-slave2 ~ 3 サーバーの構成を完了するには、次の手順を参照する必要があります。

1) hadoopをhadoop-slave1ノードにコピーする

  1. scp -r /usr/ローカル/hadoop hadoop-slave1:/usr/ローカル/

hadoop-slave1サーバーにログインし、スレーブのコンテンツを削除します。

  1. rm -rf /usr/ローカル/hadoop/etc/hadoop/slaves

2) 環境変数を設定する

  1. vi /etc/プロファイル 
  2. ## コンテンツ 
  3. HADOOP_HOME=/usr/ローカル/hadoopをエクスポートします。  
  4. PATH=$PATH:$HADOOP_HOME/bin をエクスポートします。

現在のターミナルで hadoop コマンドを直ちに有効にします。

  1. ソース /etc/profile

他のスレーブサービスを順番に設定する

クラスターを起動する

1. HDFSファイルシステムをフォーマットする

マスターの~/hadoopディレクトリに入り、次の操作を実行します。

  1. bin/hadoop ネームノード -format

ネームノードのフォーマットは、サービスを初めて起動する前に実行される操作であり、後で実行する必要はありません。

2. 次に、hadoop を起動します。

  1. sbin /スタート-all.sh

3. jpsコマンドを使用して実行ステータスを表示します。

  1. #master jpsを実行して実行ステータスを確認します 
  2. 25928 セカンダリネームノード 
  3. 25742 ネームノード 
  4. 26387 日本語 
  5. 26078 リソースマネージャー 
  6. #スレーブはjpsを実行して実行ステータスを確認します 
  7. 24002 ノードマネージャー 
  8. 23899 データノード 
  9. 24179 日本

4. Hadoop クラスターのステータスを表示するコマンド

単純な jps コマンドを使用して、HDFS ファイル管理システムと MapReduce サービスが正常に起動されているかどうかを確認できますが、Hadoop クラスター全体の実行状態を確認することはできません。 hadoop dfsadmin -report を通じて表示できます。このコマンドを使用すると、障害が発生したノード、HDFS の容量と使用量、各ノードのハード ディスクの使用状況をすばやく見つけることができます。

  1. hadoop dfsadmin -レポート

出力:

  1. 構成容量: 50108030976 (46.67 GB)  
  2. 現在の容量: 41877471232 (39.00 GB)  
  3. DFS 残り: 41877385216 (39.00 GB)  
  4. 使用された DFS: 86016 (84 KB)  
  5. DFS 使用率: 0.00%  
  6. 複製されたブロックの下: 0  
  7. 破損したレプリカを持つブロック: 0  
  8. 不足しているブロック: 0  
  9. 欠落ブロック(レプリケーション係数 1の場合): 0
  10.   ......

5. Hadoopの再起動

  1. sbin / stop-all.sh  
  2. sbin /スタート-all.sh

間違い

ビルドが完了して開始すると、次の 2 つのエラーが発生しました。

1. xxx: エラー: JAVA_HOMEが設定されておらず、見つかりません

このエラーは、jdk 環境変数が見つからず、hadoop-env.sh で設定する必要があることを意味します。

  1. vi /usr/ local /hadoop/etc/hadoop/hadoop-env.sh  
  2. ## 構成項目 
  3. JAVA_HOME=/usr/lib/jvm/jre-1.7.0-openjdk.x86_64 をエクスポートします。

2. ホスト「0.0.0.0 (0.0.0.0)」の信頼性を確立できません。

解決策: SELINUXを無効にする

  1. -- SELINUXを無効にする   
  2. # vim /etc/selinux/config  
  3. -- コメントアウト   
  4. #SELINUX=強制 
  5. #SELINUXTYPE=対象 
  6. - に追加 
  7. SELINUX=無効

<<:  サーバーレスアーキテクチャ変革の実践: 遺伝子サンプルの比較

>>:  ビッグデータにハイブリッドクラウドアプローチを採用する中小企業向けの3つのベストプラクティス

推薦する

Baidu Search は悪質なデータ収集行為を取り締まり、ハリケーン アルゴリズム 2.0 を導入します

月収10万元の起業の夢を実現するミニプログラム起業支援プランハリケーン アルゴリズムは、主なコンテン...

ウェブマスターネットワークからの毎日のレポート:百度モバイルがランキングを上げるウェブサイトの価格を暴露

ニュース:百度の1,000元のクラウドフォンが公開:中国聯通と提携し今月中旬に発売予定5月10日早朝...

ウェブサイトの最適化の各部分に何ポイント与えますか?

今年、Green Radish と Pomegranate アルゴリズムが導入され、SEO 業界は大...

実装の難しさを解決し、テンセントクラウドはクラウドネイティブプロセスを全速力で進めています

[51CTO.comより引用] 1日あたり100億回以上のAPI呼び出し、100万人以上の開発者、5...

調査によると、企業はポストパンデミック時代にクラウドサービスへの移行を加速するだろう

LogicMonitor の新しい調査結果によると、全体的な状況はまだ変化しているものの、COVID...

データベースのクラウド化がトレンドになります。 Alibaba CloudとMongoDBが新たな協力の旅を始める

現在、さまざまな業界でデジタル変革が継続的に進められており、データベースが重要なデジタルインフラとし...

突然消えたキーワードのランキング

11 月 22 日は SEO 担当者にとってもう 1 つのブラック フライデーでした。多くのウェブマ...

ウェブサイト構築の 8 つの気質のうちどれがあなたに適していますか?

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っていますウェブサイ...

サーバーフィールドの台湾VPS、100M帯域幅、最適化されたルーティング、優れた速度の簡単なレビュー

台湾の会社である Serverfield は、台湾の VPS と台湾の独立サーバー事業に注力していま...

電子商取引 Web サイトを開発する際には、どのような設計原則を適用する必要がありますか?

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています現在の電子...

gcoreはどうですか? gcore シンガポール VPS 評価データ共有

gcoreシンガポールのコンピュータールームはどうですか? gcore シンガポール VPS はどう...

未知のクラウド内の未知の資産を発見

クラウド資産の検出は、ほとんどの組織のクラウド戦略の中で最も見落とされ、最も理解されていないコンポー...

垂直型電子商取引は苦境に陥っており、誰も引き継ぐ意思がない。その発展は資本によって人質にされている。

ヴァンクルが年間売上高数百億元という神話を作り上げてから、国内の垂直型電子商取引は衰退し始めた。一部...

WeChatとまた戦うのか?飛影から今日頭条の社会的夢を振り返る!

01. WeChatを狙う:Feichatが発売今日頭条のソーシャルプロダクトである飛咒が発売されま...