Tencent Cloud 上で Hadoop 3.x 疑似クラスターを構築する方法を説明します

Tencent Cloud 上で Hadoop 3.x 疑似クラスターを構築する方法を説明します

1. 環境整備

CentOS Linux リリース 7.5.1804 (コア)

インストール

フォルダを作成する

$ cd /home/centos
$ mkdir ソフトウェア
$ mkdirモジュール

インストールパッケージをソフトウェアフォルダにインポートする

$ CD ソフトウェア
# 次にファイルをドラッグします

ここで使用するインストールパッケージは

/home/centos/software/hadoop-3.1.3.tar.gz

/home/centos/software/jdk-8u212-linux-x64.tar.gz

$ tar -zxvf jdk-8u212-linux-x64.tar.gz -C ../モジュール
$ tar -zxvf hadoop-3.1.3.tar.gz -C ../モジュール

環境変数の設定

$ cd /etc/profile.d/
$ vim my_env.sh

システム変数を汚染しないように、環境変数スクリプトを独自に作成します。設定内容は以下のとおりです。

#JAVA_HOME、パス 
# export はグローバル変数に昇格されます。パスが私のものと異なる場合は、ここで独自のパスを使用することを忘れないでください export JAVA_HOME=/home/centos/module/jdk1.8.0_212
エクスポート PATH=$PATH:$JAVA_HOME/bin

#HADOOP_HOME
HADOOP_HOME=/home/centos/module/hadoop-3.1.3 をエクスポートします。
PATH=$PATH:$HADOOP_HOME/bin をエクスポートします。
PATH=$PATH:$HADOOP_HOME/sbin をエクスポートします

次に、保存して終了します (vim の使い方がわからない場合は、vim の基本的な使い方を読んでください。ここでは詳細には触れません)。

環境変数を有効にするためにソースを実行してみましょう

$ ソース /etc/profile

成功するかどうかテストする

$ hadoop バージョン

$ ジャワ

上記のインターフェースが表示されれば問題ありません。それでも成功しない場合は、次の 2 つのチェックを実行できます。

  • java と hadoop のインストール ディレクトリの下の bin ディレクトリに移動し、それぞれを実行して、成功するかどうかを確認します。失敗した場合は、インストール パッケージの解凍に問題があり、ソフトウェア自体が正常にインストールされていないことを意味します。削除して再インストールしてください。
  • 操作が成功した場合、環境変数が正常に構成されていないことを意味します。すると環境変数のパス設定が確認できます。問題がなければ再起動してみてください。

パスワードなしのSSH

擬似クラスタではありますが、ローカルマシンからローカルマシンへの接続にはパスワードが必要なので、sshパスワードフリーの設定が必要です。

$ ssh-keygen -t rsa

プロンプトが表示されたらEnterキーを押し続けます。秘密鍵を生成したら

$ ssh-copy-id ローカルホスト名

ホストファイルを構成する

vi /etc/hosts
#ここで私が保持している構成は、マスターがTencent Cloudのイントラネットで構成されていることです。外部ネットワークが構成されている場合、EclipseクライアントはHadoopに接続できません。
::1 ローカルホスト.ローカルドメイン ローカルホスト
::1 ローカルホスト6.ローカルドメイン6 ローカルホスト6
172.16.0.3 マスター
127.0.0.1 ローカルホスト

ホスト名を変更する

vi /etc/sysconfig/ネットワーク 
#HOSTNAMEをmasterに変更
ホスト名=マスター

ホスト名を変更する

$ hostnamectl --static ホスト名マスターを設定する

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

$ systemctl 無効にするfirewalld #永続的

2. Hadoopを構成する

設定ファイル

Hadoop設定ファイルエリアに入ると、すべての設定ファイルがこのフォルダにあります

$ cd /home/centos/module/hadoop-3.1.3/etc/hadoop

設定したいファイルは主に

コアサイト.xml

  • fs.defaultFS はローカル マシンのアクセス パスです。
  • hadoop.tmp.dirはデータ保存パスです
  • イントラネット アドレスがわからない場合は、Tencent Cloud の Web サイトで確認してください。

hdfs-サイト.xml

  • dfs.replicationはデータのコピー数を指し、デフォルトは3です。
  • 疑似クラスターなので1に設定します。

糸サイト.xml
マップレッドサイト.xml
hadoop-env.sh

  • expert JAVA_HOME=JDKのインストールパス

後は手順に従ってください。

$ vim コアサイト.xml

<構成>
  <プロパティ>
    <name>fs.defaultFS</name>
    <value>hdfs://Tencent Cloud イントラネット IP アドレス:9820</value>
  </プロパティ>
 
  <プロパティ>
    <name>hadoop.tmp.dir</name>
    <値>/home/centos/module/hadoop-3.1.3/data/tmp</値>
  </プロパティ>
	<!-- Web インターフェースを通じて HDFS を操作する権限 -->
  <プロパティ>
    <name>hadoop.http.staticuser.user</name>
    <値>ルート</値>
  </プロパティ>
    <!-- Hive 互換性の設定は後で -->
  <プロパティ>
    <name>hadoop.proxyuser.root.hosts</name>
    <値>*</値>
  </プロパティ>
  <プロパティ>
    <name>hadoop.proxyuser.root.groups</name>
    <値>*</値>
    </プロパティ>
</構成>

$ vim hdfs-site.xml

<構成>
  <プロパティ>
    <name>dfs.replication</name>
    <値>1</値>
  </プロパティ>
  <プロパティ>
    <name>dfs.namenode.secondary.http-address</name>
    <value>Tencent Cloud イントラネット IP アドレス: 9868</value>
  </プロパティ>
</構成>

$ vim hadoop-env.sh

JAVA_HOME=/home/centos/module/jdk1.8.0_212 をエクスポートします。

$ vim 糸サイト.xml

<構成>

  <!-- Reducer がデータを取得します -->
  <プロパティ>
    <name>yarn.nodemanager.aux-services</name>
    <値>mapreduce_shuffle</値>
  </プロパティ>
  <!-- YARN の ResourceManager のアドレスを指定します -->
  <プロパティ>
    <name>yarn.resourcemanager.ホスト名</name>
    <value>マスター</value>
  </プロパティ>
<!-- 環境変数は、NodeManager のコンテナ環境プロパティから継承されます。MapReduce アプリケーションの場合、デフォルト値に加えて hadoop op_mapred_home を追加する必要があります。属性値は以下の通りです -->
  <プロパティ>
    <name>yarn.nodemanager.env-whitelist</name>
 <値>JAVA_HOME、HADOOP_COMMON_HOME、HADOOP_HDFS_HOME、HADOOP_CONF_DIR、CLASSPATH_PREPEND_DISTCACHE、HADOOP_YARN_HOME、HADOOP_MAPRED_HOME</値>
    </プロパティ>
    <!-- プログラム実行時に Yarn が仮想メモリ制限を超え、コンテナが強制終了される問題を解決します -->
  <プロパティ>
    <name>yarn.nodemanager.pmem-check-enabled</name>
    <値>偽</値>
  </プロパティ>
  <プロパティ>
    <name>yarn.nodemanager.vmem-check-enabled</name>
    <値>偽</値>
  </プロパティ>
    <!-- Hive 互換性の設定は後で -->
  <プロパティ>
    <name>yarn.scheduler.最小割り当て MB</name>
    <値>512</値>
  </プロパティ>
  <プロパティ>
    <name>yarn.scheduler.maximum-allocation-mb</name>
    <値>4096</値>
  </プロパティ>
  <プロパティ>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <値>4096</値>
    </プロパティ>
  
  <!-- ログ集約を有効にする-->
  <プロパティ>
    <name>yarn.log-aggregation-enable</name>
    <値>真</値>
  </プロパティ>
  <!-- アクセス パス -->
  <プロパティ> 
    <name>yarn.log.server.url</name> 
    <値>http://172.17.0.13:19888/jobhistory/logs</値>
  </プロパティ>
  <!-- 7 日間保存 -->
  <プロパティ>
    <name>yarn.log-aggregation.retain-seconds</name>
    <値>604800</値>
  </プロパティ>
</構成>

履歴サーバーの設定

$ vim mapred-site.xml

<!-- 履歴サーバーのアドレス-->
<プロパティ>
  <name>mapreduce.jobhistory.address</name>
  <value>Tencent Cloud イントラネット IP:10020</value>
</プロパティ>

<!-- 履歴サーバーの Web アドレス -->
<プロパティ>
  <name>mapreduce.jobhistory.webapp.address</name>
  <value>Tencent Cloud イントラネット IP:19888</value>
</プロパティ>

初期化

NameNode は最初の起動時にフォーマットする必要がありますが、その後は必要ありません。

$ hdfsネームノード -フォーマット

初期化後、hadoop インストール フォルダーに data と logs の 2 つのフォルダーが表示され、初期化が成功したことがわかります。

次に、クラスターを起動しましょう。

$ start-dfs.sh

起動が完了しました。異常情報はありません。プロセスを確認してください

[ルート@VM_0_13_centos hadoop]# jps
20032 日本
30900 データノード
31355 セカンダリネームノード
30559 ネームノード

無事にスタートしました〜!

ワンクリックスタート

上記のすべてが問題なければ、ワンクリックでクラスターを起動するスクリプトを作成し、bin ディレクトリに新しいスクリプトを作成できます。

$ vim マイクラスタ

次のコンテンツを追加します

#!/bin/bash
ケース$1
"始める")
#dfs 糸の歴史
dfs.shを起動します
スタートヤーン
mapred --daemon 履歴サーバを起動する
;;
"停止")
# dfs 糸の歴史
停止-dfs.sh
停止ヤーン.sh
mapred --daemon 履歴サーバを停止する
;;
*)
echo "args がエラーです! start または stop を入力してください"
;;
エサック

スクリプト権限を設定する

$ chmod u+x mycluster

スクリプトの使用を開始する

$ mycluster を起動します

$ jps
23680 ノードマネージャー
24129 ジョブ履歴サーバー
22417 データノード
24420 jps
22023 ネームノード
23384 リソースマネージャー
22891 セカンダリネームノード

3. HDFsを表示する

セキュリティグループルールを構成する

次の操作を実行する前に、セキュリティ グループ ルールのプロトコル ポートで使用する次のポートを追加します。

ポート番号:

  • ネームノードポート: 9870
  • セカンダリNNポート: 9868
  • 職歴: 19888

Hadoop ウェブページ

ブラウザに以下を入力してください:騰訊云公網地址:端口號対応するWebインターフェースに入ります

セカンダリネームノードのインターフェース表示が正常ではないことが判明しました。これは、hadoop3 の dfs-dust.js の time 関数が誤って使用されていたことが原因です。手動で修正してみましょう。

まずクラスタをシャットダウンする

$ mycluster を停止する

ファイルを変更する

$ vim /home/centos/module/hadoop-3.1.3/share/hadoop/hdfs/webapps/static/dfs-dust.js

図に示すように、約 61 行目で次のように変更します。

新しい Date(Number(v)).toLocaleString() を返します。

クラスタを再起動します

$ mycluster を起動します

セカンダリネームノードの Web インターフェースが正常であることがわかります。

HDFSのテスト

ファイルをアップロードして楽しみましょう。

hadoopディレクトリに新しいフォルダを作成する

$ mkdir temdatas

フォルダに入り、新しいテストファイルを作成します

$ vim テキスト.txt

何でも好きなように書いて保存すれば、ファイルのアップロードを開始できます。

$ hdfs dfs -put text.txt /

ウェブページを確認してアップロードに成功しました〜

このファイルをもう一度ダウンロードしてみてください

$ hdfs dfs -get /text.txt ./text1.txt

成功しました〜
Hadoop クラスターが構築されたので、自分でも楽しいことをしてみましょう〜!

WordCount のケーススタディ

ウェブ上で新しいフォルダ入力を作成する

書いたさまざまな単語のファイルをアップロードして単語統計を取る

#または、vimで書いて自分でアップロードすることもできます $ hdfs dfs -put wordcount.txt /input

次に、単語数ケースをテストします。出力フォルダーは存在できないことに注意してください。

$ hadoop jar /home/centos/module/hadoop-3.1.3/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.1.3.jar ワードカウント /input /output

走った後、結果を見てみましょう

# hdfs ファイル [root@master mydata] をプルします # hdfs dfs -get /output ./
# 結果を表示 [root@master output]# cat part-r-00000 
2つ
b3 3 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 30 31 32 33 34 35 36 37 38 39 49 40 51 42 43 52 44 53 46 54 55 67 78 89 90
2 2ページ
1 d
1 1
1 1

この時点で、Hadoop を自由に操作することができます。

もちろん、試してみたら、まだ解決されていない小さな問題があることがわかります。Web上のファイルをクリックして先頭または末尾を表示しても、表示できず、ダウンロードもできません。仮想マシンをインストールしたときにはこのようなことは起きませんでしたが、何が起こったのかはまだ調査中です。何が起こっているのか知っている人がいたら、メッセージを残してください。

Tencent Cloud で Hadoop 3.x 擬似クラスターを構築する方法についての記事はこれで終わりです。Tencent Cloud で Hadoop 3.x 擬似クラスターを構築する方法の詳細については、123WORDPRESS.COM の以前の記事を検索するか、以下の関連記事を引き続き参照してください。今後も 123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • Hadoop マルチジョブ並列処理の詳細な例
  • 一般的な Hadoop エラーと解決策の詳細な説明
  • リモート デバッグ コードに IntelliJ IDEA を使用するように Hadoop を構成する方法
  • Spring と統合された Hadoop の使用方法に関する詳細なチュートリアル (ビッグ データのクイック スタート)
  • Windows で IDEA を使用して Hadoop 開発環境を構築する詳細な方法
  • CentOS 7 は Hadoop 2.10 の高可用性 (HA) をビルドします
  • DockerでHadoopを実行しイメージを作成する方法
  • Hadoopを使用してファイルから指定されたコンテンツを抽出する方法を教えます

<<:  Vueはプログレスバーの変更効果を実現します

>>:  MySQL トランザクションの概念と使用法の詳細な説明

推薦する

Angularコンポーネントのライフサイクルの詳しい説明(パート2)

目次1. ビューフック1. ngAfterViewInit および ngAfterViewCheck...

スケーラブルな列の完全な例を実現するための Ant 設計 Vue テーブル

ant-design-vue テーブルのスケーラブルな列の問題に対する完璧なソリューション。固定列と...

Linux サーバー上のローカル静的リソースにアクセスするために nginx を使用する方法

1. ポート 80 が占有されているかどうかを確認します。通常、ポート 80 は Apache サー...

W3C チュートリアル (9): W3C XPath アクティビティ

XPath は、XML ドキュメントの一部を選択するための言語です。 XPath は、XSLT、XQ...

uniapp プロジェクトの最適化方法と提案

目次1. 複雑なページデータ領域をコンポーネントにカプセル化する2. 大きな画像の使用を避ける3. ...

Centos 6.5 での mysql-community-server. 5.7.18-1.el6 のインストール

次のコマンドを使用して、MySQL Serverがインストールされているかどうかを確認します。 [r...

CSS フロート(float, clear)の人気の解説と体験談

私はかなり昔に CSS に触れましたが、フローティングについてはいつも混乱していました。私の理解が浅...

JSは画像の滝の流れの効果を実現します

この記事では、画像ウォーターフォールフローを実現するためのJSの具体的なコードを参考までに共有します...

Linux システムで MySQL の文字セットを UTF8 に変更する手順

目次1. データベース内の MySQL ステータスを確認します。 2. 設定ファイルを変更します。 ...

Vue の 4 つのカスタム命令の説明と使用例

4つの実用的なVueカスタム指示1. Vドラッグ要件: マウスドラッグ要素アイデア:要素のオフセット...

CSSを使用してダークモードとブライトモードを切り替える

Web Skills第5号では、CSSでダークモードやハイライトモードを実装するための技術的なソリュ...

ユーザーはその理由を知る必要がある

証券会社にいた頃、設計業務が忙しくなかったため、商品のマニュアルを書く役割を担ったことがありました。...

MySQL がテーブルを読み取れないエラー (MySQL 1018 エラー) の解決方法

1. エラーの再現MySQL データベースにはアクセスできますが、データベース テーブルを読み取るこ...

MySQLの権限とインデックスの詳細な説明

mysql の権限とインデックスmysql の最高権限ユーザーは root です。 CREATE U...

MySQLスケーラブル設計の基本原則

目次序文1. スケーラビリティとは何ですか?スケールアウトの利点:スケールアウトのデメリット:スケー...