Linux7 ベースの Hadoop のインストールと構成の詳細なグラフィック説明

Linux7 ベースの Hadoop のインストールと構成の詳細なグラフィック説明

ここに画像の説明を挿入ここに画像の説明を挿入

上記のように材料を準備します(ps: hadoop-3.1.2-srcはhadoop-3.1.2に変更されます)

ソースファイルの src はどういう意味ですか? とにかく変更しました。下のスクリーンショットに注意してください。間違いがあれば、時間があるときに修正します。

Centos7をインストール

ここに画像の説明を挿入

デスクトップを右クリックしてターミナルを開きます - ifconfigと入力します - ens33のIPアドレスを確認します - 覚えておいてxftp6を開きます

ここに画像の説明を挿入

新規をクリック

ここに画像の説明を挿入

ここに画像の説明を挿入

ここに画像の説明を挿入

複数の材料を選択し、右クリックして転送します。イントラネットの転送速度は速くもなく遅くもありません。

完璧です。

ここに画像の説明を挿入ここに画像の説明を挿入ここに画像の説明を挿入

hadoopインストールパッケージを解凍します。tar -zxvf hadoop-3.1.2-src.tar.gz

ここに画像の説明を挿入

Centos7を再インストールし、解凍時にフォルダに分割しました

ここに画像の説明を挿入ここに画像の説明を挿入

上記のように書く

ここに画像の説明を挿入ここに画像の説明を挿入ここに画像の説明を挿入ここに画像の説明を挿入

xshellを開いて新規作成

ここに画像の説明を挿入

ホストIPを入力し、ユーザー認証にユーザー名とパスワードを入力してください

ここに画像の説明を挿入

ここに画像の説明を挿入ここに画像の説明を挿入

はい、それです。3台のマシンの名前を変更する必要があります。

ここに画像の説明を挿入

時間同期のタイムゾーンは一貫しています。ホスト時間が正確に設定されるためには、各マシンのタイムゾーンが一貫している必要があります。実験では、ネットワーク時間を同期する必要があるため、最初に同じタイムゾーンを選択する必要があります。まずタイムゾーンが同じであることを確認してください。そうでないと、同期後にタイムゾーンに違いが生じます。 dateコマンドを使用してマシンの時刻を確認できます。タイムゾーンを選択してください: tzselect

ここに画像の説明を挿入

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

ステータスが dead の場合、ファイアウォールは閉じられます。 ファイアウォールを閉じる: systemctl stop firewalld ステータスを表示する: systemctl status firewalld

2. ホストファイルの設定(3台のマシン)各ノードのIPアドレスを以下のように入力します。

ここに画像の説明を挿入

3. マスターは NTP サーバーとして機能し、NTP 構成ファイルを変更します。 (マスター上で実行)

vi /etc/ntp.conf
	サーバー 127.127.1.0 # ローカルクロック
	fudge 127.127.1.0 stratum 10 #stratumを他の値に設定することも可能です。範囲は0〜15です。 

ここに画像の説明を挿入

	ntp サービスを再起動します。
	/bin/systemctl ntpd.service を再起動します

	他のマシンが同期する(スレーブ1、スレーブ2)
	約 5 分間待ってから、他のマシンのマスター サーバーの時間を同期します。
	ntpdate マスター

	構成プラットフォームに外部ネットワーク接続がない場合は、次のコマンドを入力して 3 台のマシンを同じ時刻に設定できます。
	日付 -s 10:00 (時刻) 

ここに画像の説明を挿入

ようやく本題に入りましたか? ? ?慌てないで。

1. パスワードなしのSSH

(1)各ノードは公開鍵と秘密鍵を生成する。

ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa (3 台のマシン)
キー生成ディレクトリは、ユーザーのホーム ディレクトリの下の .ssh ディレクトリにあります。表示するには、対応するディレクトリを入力します。
cd .ssh/

ここに画像の説明を挿入

(2) id_dsa.pub は公開鍵、id_dsa は秘密鍵です。公開鍵ファイルを authorized_keys ファイルにコピーします。(マスターのみ)

cat id_dsa.pub >> authorized_keys (これは .ssh/ パスで実行されることに注意してください)

ここに画像の説明を挿入

ホスト上で自分自身に接続することを、ssh ループバックとも呼びます。
SSH マスター

ここに画像の説明を挿入

(3)マスターノードがパスワードなしでSSH経由で2つのスレーブノードにログインできるようにします。 (スレーブでの操作)

この機能を実現するには、マスターが 2 つのスレーブ ノードに正常かつ安全にアクセスできるように、2 つのスレーブ ノードの公開鍵ファイルにマスター ノードの公開鍵情報が含まれている必要があります。
slave1 ノードは scp コマンドを使用してマスター ノードにリモートでログインし、マスターの公開キー ファイルを現在のディレクトリにコピーして、名前を master_das.pub に変更します。このプロセスではパスワードの検証が必要です。

scp master:~/.ssh/id_dsa.pub ./master_das.pub

ここに画像の説明を挿入

マスター ノードの公開キー ファイルを authorized_keys ファイルに追加します。

cat master_das.pub >> authorized_keys

(1) 各ノードの公開鍵と秘密鍵を生成します: ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa (3 台のマシン) 鍵生成ディレクトリは、ユーザーのホーム ディレクトリの下の .ssh ディレクトリにあります。 対応するディレクトリに移動して確認します: cd .ssh/ (2) id_dsa.pub が公開鍵、id_dsa が秘密鍵です。次に、公開鍵ファイルを authorized_keys ファイルにコピーします: (マスターのみ) cat id_dsa.pub >> authorized_keys (操作は .ssh/ パスの下にあることに注意してください) ホスト上の自分自身に接続することを、ssh 内部ループとも呼びます。 SSH マスター

ここに画像の説明を挿入 現時点では、

マスターはスレーブ1に接続できるようになりました。

ここに画像の説明を挿入

スレーブ 1 ノードが初めて接続されるとき、「はい」で接続を確認する必要があります。つまり、マスター ノードはスレーブ 1 ノードに接続するときに手動で確認する必要があり、自動的に接続することはできません。はいを入力すると、接続が成功し、ログアウトしてマスター ノードに戻ります。

スレーブ2でも同じ操作が行われます

JDKは以前にインストールされていたので、Windows(3台のマシン)で環境変数を設定するのと同じように、環境を直接設定します。

環境変数を変更する: vi /etc/profile
> 次のコンテンツを追加します。
> JAVA_HOME=/usr/java/jdk1.8.0_241 をエクスポートします
> エクスポート CLASSPATH=$JAVA_HOME/lib/export
> PATH=$PATH:$JAVA_HOME/bin
> PATH JAVA_HOME CLASSPATHをエクスポートする

環境変数を有効にするには: source /etc/profile

ちょっとしたトリックSCPを挿入する

ここに画像の説明を挿入

scp /etc/profile slave1:/etc/profile ##このようにslave1とslave2に渡すことができます

ついに Hadoop にたどり着いた? ? ? おめでとうございます、ニン!

環境変数を設定します。
vi /etc/プロファイル
HADOOP_HOME=/usr/hadoop/hadoop-3.1.2 をエクスポートします。
エクスポート CLASSPATH=$CLASSPATH:$HADOOP_HOME/lib
PATH=$PATH:$HADOOP_HOME/bin をエクスポートします。

私がよく忘れてしまうステップを大きな声で教えてください!

プロファイルを有効にするには、次のコマンドを使用します: source /etc/profile

ご注意:以下は設定ファイルの内容です。この記事では今のところ内容については説明しませんが、標準の設定ファイルを用意しました。

ここに画像の説明を挿入

Hadoop環境設定ファイルhadoop-env.shを編集する

JAVA_HOME=/usr/java/jdk1.8.0_241 をエクスポートします。
このファイルには多くのコメントが含まれます。設定するテンプレートを見つけて、ポンド記号を削除します。

それから、私が怠けてしまう部分があります! ! ! ! !いくつかの設定ファイルをアップロードしました。このフォルダにコピーできます。上書きするかどうかを尋ねられたら、y と入力します。

core-site.xml yarn-site.xml hdfs-site.xml mapred-site.xml 

ここに画像の説明を挿入

また、スレーブファイルを作成し、以下のようにslave1 slave2を追加する必要があります。

ここに画像の説明を挿入

マスターファイルもあります

ここに画像の説明を挿入

(9)Hadoopを配布する:
scp -r /usr/hadoop ルート@slave1:/usr/
scp -r /usr/hadoop ルート@slave2:/usr/

マスターhadoop namenode -formatでhadoopをフォーマットします。エラーが報告された場合は、次のリンクでエラーに解決策があるかどうかを確認してください。

要約する

以上が編集者が紹介した Linux 7 ベースの Hadoop のインストールと構成の詳細な図解です。皆様のお役に立てれば幸いです。

以下もご興味があるかもしれません:
  • Linux で Hadoop クラスターをインストールするための詳細な手順
  • Linux での Hadoop 2.7.3 のインストールとセットアップのプロセス
  • Hadoop を使用せずに Linux 環境に Spark のスタンドアロン バージョンをインストールする方法
  • Linux の Centos7 で Hadoop サービスを構築する手順
  • Linux で Hadoop クラスターをインストールして構成する詳細な手順
  • Linux で Hadoop 環境を構築する手順の共有
  • Linux システムに Hadoop の真の分散クラスタをインストールする詳細な説明

<<:  vscodeでnpmを使用してbabelをインストールする方法

>>:  Windows で複数の MySQL インスタンスを実行する方法

推薦する

DockerコンテナでPythonを実行するディープラーニング環境を構築する方法

タスク マネージャーで仮想化を確認し、有効になっている場合は仮想化を、無効になっている場合はコンピュ...

JavaScript でよく使われるいくつかの文字列メソッドの概要 (初心者必読)

JavaScriptでよく使われるいくつかの文字列メソッド文字列は読み取り専用データです。よく使用...

Linux クラウド サーバーに JDK と Tomcat をインストールするための詳細な手順 (推奨)

JDKをダウンロードしてインストールするステップ 1: まず、公式 Web サイト http://...

MySQLのユーザーアカウント管理と権限管理の詳細な説明

序文MySQL の権限テーブルは、データベースの起動時にメモリにロードされます。ユーザーが ID 認...

MySQL バックアップ スクリプトの書き方

序文:データベースのバックアップの重要性は、特にデータの損失が深刻な結果を招く可能性がある実稼働環境...

MySQL のフィールドに一意のインデックスを追加および削除する方法

1. PRIMARY KEY(主キーインデックス)を追加するmysql>ALTER TABLE...

MySQLを定期的にバックアップしてQiniuにアップロードする方法

ほとんどのアプリケーション シナリオでは、緊急時に備えて重要なデータをバックアップし、安全な場所に保...

HTML/CSS での空白処理とページ内の空白を保持する方法

HTML の空白ルールHTML では、コンテンツ内の複数のスペースは通常 1 つとみなされ、連続する...

Element-ui の組み込み 2 つのリモート検索 (ファジークエリ) の使用方法の説明

問題の説明フロントエンドリモート検索やファジークエリと呼ばれる種類のクエリがあります。 Ele.me...

Nofollowタグの書き方と使い方

「nofollow」タグは数年前に Google、Yahoo、Microsoft によって提案されま...

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

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

MySQLデータベースのロック機構の分析

同時アクセスの場合、非反復読み取りやその他の読み取り現象が発生する可能性があります。高い同時実行性に...

MACOS で MySQL ルートパスワードを忘れた場合の解決策

MySQL は、スウェーデンの会社 MySQL AB によって開発されたリレーショナル データベース...

Vue で ToDo アプリケーションを実装する例

背景まず最初に、私はフロントエンド開発の専門家ではないことを述べておきたいと思います。私の以前のコン...

Reactにおけるコンポーネント通信の詳細な説明

目次親コンポーネントは子コンポーネントと通信します子コンポーネントは親コンポーネントと通信しますコン...