Centos7.4を覚えてHadoop3.2.0(HA)YARN(HA)クラスターを構築する

1.基本情報

公式サイト  http://hadoop.apache.org/

クイックスタート  http://hadoop.apache.org/docs/r1.0.4/cn/quickstart.html

オンラインドキュメント  http://tool.oschina.net/apidocs/apidoc?api=hadoop

Yibaiチュートリアルhttps://www.yiibai.com/hadoop/ 

W3Cschoolチュートリアル https://www.w3cschool.cn/hadoop/?

2.環境とツールの説明

1.オペレーティングシステムCentos7.4x64最小1708

5台の仮想マシンをインストールします

NameNode:2セットの2Gメモリ、1コアCPU

DataNode:3セットの2Gメモリ、1コアCPU

2. JDKバージョン:jdk1.8

3.ツール:xshell5

4. VMwareバージョン:VMware Workstation Pro15

5、Hadoop:3.2.0

6、Zookeeper:3.4.5

3.インストールと展開(基本環境の準備)

1.仮想マシンのインストール(5台の仮想マシンをインストール)

参照https://blog.csdn.net/llwy1428/article/details/89328381 

2.各仮想マシンはインターネットに接続されています(5つのノードはネットワークカードで構成する必要があります)

ネットワークカードの構成は、次のことを参照できます。

https://blog.csdn.net/llwy1428/article/details/85058028

3.ホスト名を変更します(5つのノードでホスト名を変更する必要があります)

クラスタ内の各ノードのホスト名を編集します(例として最初のノードnode1.cnを取り上げます)

[root@localhost~]# hostnamectl set-hostname node1.cn
node1.cn
node2.cn
node3.cn
node4.cn
node5.cn

4. JDK8環境の構築(5つのノードを構築する必要があります)

https://blog.csdn.net/llwy1428/article/details/85232267を参照して ください

5.ファイアウォールを構成します(5つのノードを操作する必要があります)

ファイアウォールをオフにし、起動を禁止するようにブートを設定します

关闭防火墙    : systemctl stop firewalld
查看状态      : systemctl status firewalld
开机禁用      : systemctl disable firewalld

6.静的IPを構成します

例としてnode1.cnノードを取り上げます(他のノードは省略されています)。

[[email protected] ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33

注:赤いボックスは変更および追加された部分です

参照できます:https//blog.csdn.net/llwy1428/article/details/85058028

7.ホストファイルを構成します

例としてnode1.cnノードを取り上げます。

[root@node1 ~]# vim /etc/hosts
127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.11.131 node1.cn
192.168.11.132 node2.cn
192.168.11.133 node3.cn
192.168.11.134 node4.cn
192.168.11.135 node5.cn

8.基本的なツールをインストールします

[root@node1 ~]# yum install -y vim wget lrzsz tree zip unzip net-tools ntp
[root@node1 ~]# yum update -y (可选)

(ネットワークの状況によっては、数分待つ必要がある場合があります)

9.ノード間でパスワードなしのログインを構成します

具体的な手順は次のとおりです。 

https://blog.csdn.net/llwy1428/article/details/85911160

https://blog.csdn.net/llwy1428/article/details/85641999

10.クラスターの各ノードで開いているシステムファイルの数を変更します

例としてnode1.cnノードを取り上げます。

[root@node1 ~]# vim /etc/security/limits.conf

参照

https://blog.csdn.net/llwy1428/article/details/89389191

11.クラスター内の各ノードの構成時間の同期

この記事は、Aliyunタイムサーバー、Aliyunタイムサーバーアドレスに基づいています:ntp6.aliyun.com

注:専用のタイムサーバーがある場合は、タイムサーバーのホスト名またはIPアドレスを変更してください。ホスト名はetc / hostsファイルにマップする必要があります。

例としてnode1.cnを取り上げます。

システムタイムゾーンを東場地区(上海タイムゾーン)に設定する

[root@node1 ~]# timedatectl set-timezone Asia/Shanghai

ntpdサービスをオフにします

[root@node1 ~]# systemctl stop ntpd.service

起動を禁止するようにntpdサービスを設定する

[root@node1 ~]# systemctl disable ntpd

スケジュールされたタスクを設定する

[root@node1 ~]# crontab -e

次のように記述します(10分ごとにAlibaba Cloudタイムサーバーと同期します)。

0-59/10 * * * * /usr/sbin/ntpdate ntp6.aliyun.com

スケジュールされたタスクサービスを再起動します

[root@node1 ~]# /bin/systemctl restart crond.service

起動する時間指定タスクを設定する

[root@node1 ~]# vim /etc/rc.local

次のコンテンツを追加したら、保存して終了します:wq

/bin/systemctl start crond.service

クラスタ内の他のすべてのノードは、node1.cnと同じです。

参照https://blog.csdn.net/llwy1428/article/details/89330330 

12.クラスターの各ノードでSELinuxを無効にします

例としてnode1.cnを取り上げます。

[root@node1 ~]# vim /etc/selinux/config

次のコンテンツを変更した後、保存して終了します:wq

クラスタ内の他のすべてのノードは、node1.cnと同じです。

13.クラスターの各ノードで透過的なHugePagesを無効にします

参照  https://blog.csdn.net/llwy1428/article/details/89387744

14.システム環境をUTF8として構成します

例としてnode1.cnを取り上げます。

[root@node1 ~]# echo "export LANG=zh_CN.UTF-8 " >> ~/.bashrc
[root@node1 ~]# source ~/.bashrc

クラスタ内の他のすべてのノードは、node1.cnと同じです。

15、データベースをインストールします

注:MariaDb(Mysql)は、Hive、Spark、Oozie、Supersetなどのメタデータサポートを提供するためにインストールされます。これらのツールを使用しない場合は、Mysqlデータベースをインストールする必要はありません。

MariaDb(Mysql)のインストールプロセスは、以下を参照できます。

https://blog.csdn.net/llwy1428/article/details/84965680

https://blog.csdn.net/llwy1428/article/details/85255621

第4に、Hadoopクラスターをインストールしてデプロイします(HAモード)

(注:クラスターの構築および操作中に、クラスター内のすべてのノードの時刻が同期されていることを確認してください)

1.ディレクトリを作成し、ファイルをアップロードし、

注:最初にnode1.cnで基本情報を構成し、次に構成済みファイルを各ノードに配布してから、さらに構成を実行します

各ノードにディレクトリ/ opt / cluster /を作成します

例としてnode1.cnを取り上げます。

[root@node1 ~]# mkdir /opt/cluster

2.ファイルのダウンロード(ファイルのアップロード)、解凍

ダウンロード

[root@node1 opt]# wget http://mirrors.tuna.tsinghua.edu.cn/apache/hadoop/common/hadoop-3.2.0/hadoop-3.2.0.tar.gz

または

ファイルを手動でダウンロードします:hadoop-3.2.0.tar.gz

ダウンロードしたファイルhadoop-3.2.0.tar.gzを/ opt / clusterパスにアップロードし、hadoop-3.2.0.tar.gzを解凍します。

/ opt / clusterディレクトリに入る

ファイルを解凍する

[root@node1 cluster]# tar zxvf hadoop-3.2.0.tar.gz

ディレクトリ構造を表示する

3.hadoopにいくつかのディレクトリを作成します

[root@node1 ~]# mkdir /opt/cluster/hadoop-3.2.0/hdfs
[root@node1 ~]# mkdir /opt/cluster/hadoop-3.2.0/hdfs/tmp
[root@node1 ~]# mkdir /opt/cluster/hadoop-3.2.0/hdfs/name
[root@node1 ~]# mkdir /opt/cluster/hadoop-3.2.0/hdfs/data
[root@node1 ~]# mkdir /opt/cluster/hadoop-3.2.0/hdfs/journaldata

4. hadoop環境変数を構成します(Hadoop環境変数情報を追加します)

[root@node1 ~]# vim /etc/profile
在最后追加如下信息
export HADOOP_HOME="/opt/cluster/hadoop-3.2.0"
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH

保存して終了します:wq

構成ファイルを有効にする

[root@node1 ~]# source /etc/profile

バージョンを表示

5.hadoop-env.shを構成します

[root@node1 ~]# vim /opt/cluster/hadoop-3.2.0/etc/hadoop/hadoop-env.sh

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

export JAVA_HOME=/opt/utils/jdk1.8.0_191
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_JOURNALNODE_USER=root
export HDFS_ZKFC_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root

5、配置 core-site.xml

[root@node1 ~]# vim /opt/cluster/hadoop-3.2.0/etc/hadoop/core-site.xml
<configuration>
     <property>
           <name>fs.defaultFS</name>
           <value>hdfs://cluster</value>
     </property>
     <property>
           <name>hadoop.tmp.dir</name>
           <value>/opt/cluster/hadoop-3.2.0/hdfs/tmp</value>
     </property>
     <property>
            <name>ha.zookeeper.quorum</name>
            <value>node3.cn:2181,node4.cn:2181,node5.cn:2181</value>
    </property>
</configuration>

6.ファイルhdfs-site.xmlを編集します

[root@node1 ~]# vim /opt/cluster/hadoop-3.2.0/etc/hadoop/hdfs-site.xml
<configuration>
	<property>
		<name>dfs.nameservices</name>
		<value>cluster</value>
	</property>
	<property>
		<name>dfs.ha.namenodes.cluster</name>
		<value>nn1,nn2</value>
	</property>
	<property>
                <name>dfs.replication</name>
                <value>3</value>
        </property>

	<property>
		<name>dfs.namenode.rpc-address.cluster.nn1</name>
		<value>node1.cn:8020</value>
	</property>
	<property>
		<name>dfs.namenode.rpc-address.cluster.nn2</name>
		<value>node2.cn:8020</value>
	</property>
	<property>
		<name>dfs.namenode.http-address.cluster.nn1</name>
		<value>node1.cn:50070</value>
	</property>
	<property>
		<name>dfs.namenode.http-address.cluster.nn2</name>
		<value>node2.cn:50070</value>
	</property>
	<property>
		<name>dfs.namenode.shared.edits.dir</name>
		<value>qjournal://node3.cn:8485;node4.cn:8485;node5.cn:8485/cluster</value>
	</property>
	<property>
		<name>dfs.namenode.name.dir</name>
		<value>file:/opt/cluster/hadoop-3.2.0/hdfs/name</value>
	</property>
	<property>
		<name>dfs.datanode.data.dir</name>
		<value>file:/opt/cluster/hadoop-3.2.0/hdfs/data</value>
	</property>
	<property>
		<name>dfs.journalnode.edits.dir</name>
		<value>/opt/cluster/hadoop-3.2.0/hdfs/edits</value>
	</property>
	<property>
		<name>dfs.ha.automatic-failover.enabled</name>
		<value>true</value>
	</property>
	<property>
		<name>dfs.journalnode.edits.dir</name>
		<value>/opt/cluster/hadoop-3.2.0/hdfs/journaldata</value>
	</property>
	<property>
		<name>dfs.client.failover.proxy.provider.cluster</name>
		<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
	</property>
	<property>
		<name>dfs.ha.fencing.methods</name>
		<value>shell(/bin/true)</value>
	</property>
	<property>
		<name>dfs.ha.fencing.methods</name>
		<value>sshfence</value>
	</property>
	<property>
		<name>dfs.ha.fencing.ssh.private-key-files</name>
		<value>/root/.ssh/id_rsa</value>
	</property>
	<property>
 		<name>dfs.namenode.datanode.registration.ip-hostname-check</name>
 		<value>false</value>
	</property>
</configuration>

7.ファイルmapred-site.xmlを編集します

[root@node1 ~]# vim /opt/cluster/hadoop-3.2.0/etc/hadoop/mapred-site.xml
<configuration>
       	<property>
           	<name>mapreduce.framework.name</name>
           	<value>yarn</value>
       	</property>
       	<property>
               	<name>yarn.app.mapreduce.am.env</name>
              	<value>HADOOP_MAPRED_HOME=/opt/cluster/hadoop-3.2.0</value>
       	</property>
       	<property>
           	<name>mapreduce.map.env</name>
           	<value>HADOOP_MAPRED_HOME=/opt/cluster/hadoop-3.2.0</value>
      	</property>
      	<property>
        	<name>mapreduce.reduce.env</name>	
        	<value>HADOOP_MAPRED_HOME=/opt/cluster/hadoop-3.2.0</value>
      	</property>
	<property>
		<name>mapreduce.jobhistory.address</name>
		<value>node1.cn:10020</value>
	</property>
	<property>
		<name>mapreduce.jobhistory.webapp.address</name>
		<value>node1.cn:19888</value>
	</property>
</configuration>

8.ファイルyarn-site.xmlを編集します

[root@node1 ~]# vim /opt/cluster/hadoop-3.2.0/etc/hadoop/yarn-site.xml
<configuration>
	<property>
  		<name>yarn.resourcemanager.ha.enabled</name>
  		<value>true</value>
	</property>
	<property>
  		<name>yarn.resourcemanager.cluster-id</name>
  		<value>cluster-yarn</value>
	</property>
	<property>
  		<name>yarn.resourcemanager.ha.rm-ids</name>
  		<value>rm1,rm2</value>
	</property>
	<property>
  		<name>yarn.resourcemanager.hostname.rm1</name>
  		<value>node1.cn</value>
	</property>
	<property>
  		<name>yarn.resourcemanager.hostname.rm2</name>
  		<value>node2.cn</value>
	</property>
	<property>
  		<name>yarn.resourcemanager.webapp.address.rm1</name>
  		<value>node1.cn:8088</value>
	</property>
	<property>
  		<name>yarn.resourcemanager.webapp.address.rm2</name>
  		<value>node2.cn:8088</value>
	</property>
	<property>
 		<name>yarn.resourcemanager.zk-address</name>
  		<value>node3.cn:2181,node4.cn:2181,node5.cn:2181</value>
	</property>
	<property>
		<name>yarn.nodemanager.aux-services</name>
		<value>mapreduce_shuffle</value>
	</property>					
	<property>
		<name>yarn.log-aggregation-enable</name>
		<value>true</value>
	</property>															    <property>
		<name>yarn.log-aggregation.retain-seconds</name>
		<value>106800</value>
	</property>
</configuration>

9.構成ファイルワーカー

[root@node1 ~]# vim /opt/cluster/hadoop-3.2.0/etc/hadoop/workers
node3.cn
node4.cn
node5.cn

10.hadoop-3.2.0ディレクトリ全体を各ノードに配布します

[root@node1 ~]# scp -r /opt/cluster/hadoop-3.2.0 node2.cn:/opt/cluster/
[root@node1 ~]# scp -r /opt/cluster/hadoop-3.2.0 node3.cn:/opt/cluster/
[root@node1 ~]# scp -r /opt/cluster/hadoop-3.2.0 node4.cn:/opt/cluster/
[root@node1 ~]# scp -r /opt/cluster/hadoop-3.2.0 node5.cn:/opt/cluster/

11.zookeeperを構成して起動します

参照 

https://hunter.blog.csdn.net/article/details/96651537

https://hunter.blog.csdn.net/記事/詳細/ 85937442

12.指定された3つのノードがjournalnodeを開始します

(ここでは、ジャーナルノードとしてnode3.cn、node4.cn、node5.cnを選択します)

[root@node3 ~]# hdfs --daemon start journalnode
[root@node4 ~]# hdfs --daemon start journalnode
[root@node5 ~]# hdfs --daemon start journalnode

13.node1.cnでnamenodeをフォーマットします

[root@node1 ~]# hdfs namenode -format

14.node1.cnでnamenodeを開始します

[root@node1 ~]# hdfs --daemon start namenode

15.node2.cnのnode1.cnで正常にフォーマットされたnamenode情報を同期します

[root@node2 ~]# hdfs namenode -bootstrapStandby

16.node2.cnでnamenodeを開始します 

[root@node2 ~]# hdfs --daemon start namenode

見る

17、サービスを閉じる

(1)node1.cnおよびnode2.cnのnamenodeを閉じます

[root@node1 ~]# hdfs --daemon stop namenode
[root@node2 ~]# hdfs --daemon stop namenode

(2)node3.cn、node4.cn、node5.cnのJournalNodeを閉じます

[root@node3 ~]# hdfs --daemon stop journalnode
[root@node4 ~]# hdfs --daemon stop journalnode
[root@node5 ~]# hdfs --daemon stop journalnode

18.ZKFCをフォーマットします

まず、node3.cn、node4.cn、node5.cnでzookeeperを起動します

参照 https://blog.csdn.net/llwy1428/article/details/85937442

zookeeperを起動した後、node1.cnで実行します。

[root@node1 ~]# hdfs zkfc -formatZK

19.hdfsとyarnサービスを開始します

[root@node1 ~]# /opt/cluster/hadoop-3.2.0/sbin/start-dfs.sh

[root@node1 ~]# /opt/cluster/hadoop-3.2.0/sbin/start-yarn.sh

20.各ノードのサービス開始ステータスを確認します

  

  

 

これまでのところ、Centos 7.4はHadoop(HA)クラスターを構築し、操作は完了しています。

5つの基本的なシェル操作

(1)hdfsにディレクトリを作成します

[root@node1 ~]# hdfs dfs -mkdir /hadoop
[root@node1 ~]# hdfs dfs -mkdir /hdfs
[root@node1 ~]# hdfs dfs -mkdir /tmp

(2)カタログを見る

[root@node2 ~]# hdfs dfs -ls /

(3)ファイルをアップロードする

例:/ optディレクトリにファイルtest.txtを作成し、いくつかの単語を書き込みます(プロセスは省略されています)

[root@node3 ~]# hdfs dfs -put /opt/test.txt /hadoop

アップロードされたファイルを表示する

[root@node4 ~]# hdfs dfs -ls /hadoop
[root@node4 ~]# hdfs dfs -cat /hadoop/test.txt

(4)ファイルを削除する

[root@node5 ~]# hdfs dfs -rm /hadoop/test.txt
Deleted /hadoop/test.txt

6.ブラウザで一部のサービスのUIページを表示する

1.hdfsの情報を表示する

node1.cnとnode2.cnのIPをそれぞれ確認してください

http:// node1.cn ip :50070

http:// node2.cn ip :50070

その他のページ:省略。

2.ResourceManager情報を表示する

入る

http:// node1.cnのip :8088

または

http:// node2.cnのip :8088

 

その他のページ:省略。

7、mapreducewordcountを実行します

上記のtest.txtを例として取り上げます

[root@node5 ~]# /opt/cluster/hadoop-3.2.0/bin/yarn jar /opt/cluster/hadoop-3.2.0/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.2.0.jar wordcount /hadoop /hadoop/output

実行結果をブラウザで表示する

ResourceManagerでの実行結果

実行結果の表示

[root@node5 ~]# hdfs dfs -cat /hadoop/output/part-r-00000

 

 

 

おすすめ

転載: blog.csdn.net/llwy1428/article/details/94467687