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 トランザクションの概念と使用法の詳細な説明

推薦する

ウェブページの背景画像を伸ばす2つの方法

解決策は2つあります。 1つはCSSで、background-size:coverを使用して画像の伸...

Docker ベースの nginx ファイル サーバーを構築する方法と手順

1. このマシンに新しい設定ファイルdocker_nginx.confを作成します。 サーバー{ 7...

長いデータを HTML で表示するときに処理する方法

HTML で長いデータを表示する場合、マウスをその上に移動するとデータを切り捨てて完全なデータを表示...

JavaScript Sandboxについての簡単な説明

序文:サンドボックスといえば、私たちの頭には反射的に上の写真が思い浮かび、すぐに興味がわいてくるかも...

JavaScript の parseInt() の魔法についての簡単な説明

原因このブログを書いた理由は、今日Leetcodeの日課問題をやっていたからです。文字列を整数(at...

Vue ターンテーブル抽選の簡単な実装

この記事では、ホイール抽選を簡単に実装するためのVueの具体的なコードを参考までに共有します。具体的...

CentOS 6.8 に MySQL 8.0.18 をインストールするチュートリアルの簡単な分析 (RPM 方式)

今日は、CentOS 6.8 サーバーに MySQL 8.0.18 をインストールする方法を記録しま...

nestjs における例外フィルター Exceptionfilter の具体的な使用法

Nestjs 例外フィルターといえば、非常に強力な .Net のグローバル フィルターについて触れな...

イベントバブリング、イベントキャプチャ、イベント委任に基づく詳細な説明

イベントバブリング、イベントキャプチャ、イベント委任JavaScript では、イベント委譲は非常に...

MySQL の frm ファイルからテーブル構造を復元する 3 つの方法 [推奨]

mysql が正常に実行されている場合、テーブル構造を表示することは難しくありません。しかし、場合...

MySQL ベースのストレージエンジンとログの説明 (包括的な説明)

1.1 ストレージエンジンの概要 1.1.1 ファイルシステムストレージファイル システム: オペ...

CSS でショートカット プロパティを記述する際は、トラブルの順序に注意してください (落とし穴を避けるため)

ショートハンドプロパティは、複数のプロパティに同時に値を割り当てるために使用されます。たとえば、fo...

Win7 での Mysql 5.7.17 winx64 インストール チュートリアル

ソフトウェア バージョンとプラットフォーム: MySQL-5.7.17-winx64、win7 Ho...

HTML テーブルの行間および列間の操作 (rowspan、colspan)

一般的に、<td> 要素の colspan 属性はセルの列間操作を実装するために使用され...

dockerでpdflatex環境を設定する方法

技術的背景Latex は文書作成、特に記事作成には欠かせないツールであり、必須のテキスト組版ツールで...