ビッグデータプラットフォームの構築| Hadoopクラスターの構築

1.環境の説明

2.Hadoopアーキテクチャ

  • Hadoopの狭義には、3つの主要コンポーネントで構成さ分布式存储HDFS分布式计算MapReduce分布式资源管理和调度YARN

2.1HDFSアーキテクチャ

  • 主にデータストレージを担当
    ここに画像の説明を挿入します

  • NameNode:名前空間を管理し、データブロックマッピング情報(メタデータ)を保存し、HDFSへのクライアントアクセスを処理します。

  • SecondaryNameNode:NameNodeのホットスタンバイは、名前空間ミラーfsimageと名前空間ミラー編集ログfseditsを定期的にマージします。プライマリNameNodeに障害が発生すると、新しいアクティブNameNodeにすばやく切り替えることができます。

  • DataNode:実際のファイルデータの保存を担当し、ファイルは複数のブロックに分割され、複数のコピーで異なるDataNodeに保存されます

2.2ヤーンアーキテクチャ

  • 主にジョブスケジューリングとリソース管理を担当します
    ここに画像の説明を挿入します
  • ResourceManager(RM)
    • 送信されたジョブ要求とリソースアプリケーション要求を処理します。
    • NodeManagerのステータスを監視する
    • ApplicationMasterを起動して監視する
  • NodeManager(NM)
    • 各ノードで実行されているリソースを管理します
    • このノードのリソース使用量と各コンテナの実行ステータスをRMに定期的に報告します
    • AMからの各コンテナの開始/停止要求を処理します
  • Container
    • つまり、タスクが実行されるコンテナは、Yarnによるリソースの抽象化でもあり、メモリ、CPU、ディスク、ネットワークなどの特定のノード上の多次元リソースをカプセル化します。RMforAMによって返されるリソースが表されます。コンテナ別。YARNは各タスクにコンテナを割り当て、タスクはコンテナに記述されているリソースのみを使用できます
  • ApplicationMaster(AM)
    • 各ジョブはNMでAMを開始し、AMはMapTaskタスクとReduceTaskタスクの起動要求をNMに送信し、RMからタスクの実行に必要なリソースを要求する責任があります。
    • RMと対話して、リソースコンテナ(ジョブ実行用のリソース、タスク実行用のリソースなど)を申請します。
    • タスクの開始と停止、およびすべてのタスクの実行ステータスの監視を担当します。タスクが失敗した場合は、タスクのリソースを再申請して、タスクを再開します。

3.クラスター計画

特に指定がない限り、各サーバーは同じ構成を維持する必要があります

Hadoop300 Hadoop301 Hadoop302
NameNode V
DataNode V V V
SecondaryNameNode V
ResourceManger V
NodeEat V V V

4.ダウンロードして解凍します

4.1インストールパッケージの配置

  • ダウンロードしたhadoop3.1.3ファイルを解凍し、~/appディレクトリへのショートカットを作成します。これは、hadoop301、hadoop302の場合と同じです。
[hadoop@hadoop300 app]$ pwd
/home/hadoop/app
[hadoop@hadoop300 app]$ ll
lrwxrwxrwx   1 hadoop hadoop  47 2月  21 12:33 hadoop -> /home/hadoop/app/manager/hadoop_mg/hadoop-3.1.3

4.2Hadoop環境変数を構成する

  • vim ~/.bash_profile
# ============ java =========================
export JAVA_HOME=/home/hadoop/app/jdk
export PATH=$PATH:$JAVA_HOME/bin

# ======================= Hadoop ============================
export HADOOP_HOME=/home/hadoop/app/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

5.Hadoop構成

5.1envファイル

  • 変更された${HADOOP_HOME}/etc/hadoop下hadoop-env.sh、mapred-env.sh、yarn-env.shはすべてJDK環境変数を追加します
export JAVA_HOME=/home/hadoop/app/jdk

5.2 core-site.xml

  • ${HADOOP_HOME}/etc/hadoop/core-site.xmlファイルを変更する
  • プロキシユーザーの設定については、公式サイトのプロキシユーザーをご覧ください。
<!-- 指定HDFS中NameNode的地址, -->
<property>
	<name>fs.defaultFS</name>
    <value>hdfs://hadoop300:8020</value>
</property>

<!-- 指定Hdfs的NameNode、DataNode数据存储路径, 默认在/tmp/hadoop-${user.name}下 -->
<!--
	 <property>
		<name>hadoop.tmp.dir</name>
		<value>/tmp/hadoop-${user.name}</value>
	</property>
 -->

	 <!-- 配置HDFS管理页面登陆的静态用户为 hadoop -->
	 <property>
			<name>hadoop.http.staticuser.user</name>
			<value>hadoop</value>
	 </property>

	<!-- 配置该hadoop用户允许通过代理访问的主机节点-->
	<property>
		<name>hadoop.proxyuser.hadoop.hosts</name>
		<value>*</value>
	</property>
	<!-- 配置该hadoop用户允许代理的用户所属组-->
	<property>
		<name>hadoop.proxyuser.hadoop.groups</name>
	 	<value>*</value>
	</property>
	<!-- 配置该hadoop用户允许代理的用户, *代表所有-->
	<property>
		<name>hadoop.proxyuser.hadoop.users</name>
	 	<value>*</value>
	</property>

5.3 hdfs-site.xmlファイル(hdfs構成)

  • HDFS関連の属性を構成する
<!-- 指定HDFS副本的数量-->
<property>
	<name>dfs.replication</name>
	<value>2</value>
</property>

<!-- SecondaryNameNode启动地址 -->
<property>
	<name>dfs.namenode.secondary.http-address</name>
	<value>hadoop302:9868</value>
</property>

5.4 yarn-site.xml (yarn配置)

  • 糸関連のプロパティを構成する
<!-- Reducer获取数据的方式, 使用shuffle -->
<property>
 		<name>yarn.nodemanager.aux-services</name>
 		<value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager的主机地址 -->
<property>
	<name>yarn.resourcemanager.hostname</name>
  <value>hadoop301</value>
</property>

<!-- 容器向RM的内存申请请求允许的最小值, 即最小分配为该内存大小-->
<property>
  <name>yarn.scheduler.minimum-allocation-mb</name>
  <value>200</value>
</property>
<!-- 容器向RM的内存申请请求允许的最大值, 超出将会抛出 InvalidResourceRequestException异常-->
<property>
	<name>yarn.scheduler.maximum-allocation-mb</name>
  <value>2048</value>
</property>

<!-- 设置Yarn可使用的内存大小, 即可分配给容器的物理内存量(以MB为单位)。如果设置为-1并且yarn.nodemanager.resource.detect-hardware-capabilities为true,则会自动计算(在Windows和Linux中)。在其他情况下,默认值为8192MB。-->
<property>
  <name>yarn.nodemanager.resource.memory-mb</name>
  <value>4096</value>
</property>

<!--  关闭Yarn对物理内存和虚拟内存的限制检查
	  因为内存计算方式不一样, 可能会误认为内存不够然后把作业kill掉
 -->
<property>
  <name>yarn.nodemanager.pmem-check-enabled</name>
  <value>false</value>
</property>
<property>
  <name>yarn.nodemanager.vmem-check-enabled</name>
  <value>false</value>
</property>

<!-- 配置任务历史服务地址  -->
<property>
        <name>yarn.log.server.url</name>
        <value>http://hadoop300:19888/jobhistory/logs/</value> 
</property>

<!-- 开启日志聚集功能使能 
		 日志聚集就是应用运行完成以后,将容器本地运行的日志信息收集上传到HDFS系统上。方便查看
-->
<property>
  <name>yarn.log-aggregation-enable</name>
  <value>true</value>
</property>

<!-- 日志保留时间设置7天 -->
<property>
  <name>yarn.log-aggregation.retain-seconds</name>
  <value>604800</value>
</property>

5.5 mapred-site.xml (MapReduce配置)

  • MapReduce関連の設定を構成する
<!-- 指定MR运行在YARN上, 默认运行在local本地 -->
<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
</property>
	
	<!-- 指定jobhistory地址 -->
  <property>
    <name>mapreduce.jobhistory.address</name>
    <value>hadoop300:10020</value>
  </property>
  <property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop300:19888</value>
  </property>

<!-- 指定hadoop环境变量 -->
<property>
  <name>yarn.app.mapreduce.am.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
  <name>mapreduce.map.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>
<property>
  <name>mapreduce.reduce.env</name>
  <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value>
</property>

5.6ワーカーファイルの構成

  • ${HADOOP_HOME}/etc/hadoop/workersファイル、設定、Hadoopクラスターノードリストを変更する
    • tip: 注意不要出现空行和空格
hadoop300
hadoop301
hadoop302

6.テストを開始します

6.1NameNodeのフォーマット

  • hadoop300で実行
[hadoop@hadoop300 app]$ hdfs namenode -format

6.2HDFSを開始する

  • hadoop300で開始
[hadoop@hadoop300 ~]$ start-dfs.sh
Starting namenodes on [hadoop300]
Starting datanodes
Starting secondary namenodes [hadoop302]

6.3スタートヤーン

  • hadoop301で開始
[hadoop@hadoop301 ~]$ start-yarn.sh
Starting resourcemanager
Starting nodemanagers

6.4JobHistoryを開始する

[hadoop@hadoop300 hadoop]$ mapred --daemon start historyserver

6.5効果

  • 起動に成功した後のJpsビュープロセス
  • このとき、hdfsのnn、dn、snがすべて起動します。
  • そして糸のRMとNMも活性化されます
  • mrのJobHistoryもアクティブ化されます
[hadoop@hadoop300 hadoop]$ xcall jps
--------- hadoop300 ----------
16276 JobHistoryServer
30597 DataNode
19641 Jps
30378 NameNode
3242 NodeManager
--------- hadoop301 ----------
24596 DataNode
19976 Jps
27133 ResourceManager
27343 NodeManager
--------- hadoop302 ----------
24786 SecondaryNameNode
27160 NodeManager
24554 DataNode
19676 Jps

HDFSにアクセスするためのNameNodeインターフェースは次の場所にあります。hadoop300:9870
ここに画像の説明を挿入します

でHDFSのSecondaryNameNodeインターフェースにアクセスしますhadoop300:9868
ここに画像の説明を挿入します

糸管理インターフェースにアクセスします。hadoop301:8088
ここに画像の説明を挿入します

JobHistoryのインターフェースにアクセスしてください。hadoop300:19888
ここに画像の説明を挿入します

7.Hadoopクラスター統合スタートアップスクリプト

  • vim hadoop.sh
#!/bin/bash

case $1 in
"start"){
    
    
		echo ---------- Hadoop 集群启动 ------------
		echo "启动Hdfs"
        ssh hadoop300 "source ~/.bash_profile;start-dfs.sh"
        echo "启动Yarn"
        ssh hadoop300 "source ~/.bash_profile;mapred --daemon start historyserver"
        echo "启动JobHistory"
        ssh hadoop301 "source ~/.bash_profile;start-yarn.sh"
};;
"stop"){
    
    
		echo ---------- Hadoop 集群停止 ------------
		echo "关闭Hdfs"
        ssh hadoop300 "source ~/.bash_profile;stop-dfs.sh"
        echo "关闭Yarn"
        ssh hadoop300 "source ~/.bash_profile;mapred --daemon stop historyserver"
        echo "关闭JobHistory"
        ssh hadoop301 "source ~/.bash_profile;stop-yarn.sh"
};;
esac

10.報酬

記事が役に立ったら、著者を励ますことができます(Alipay)

ここに画像の説明を挿入します

おすすめ

転載: blog.csdn.net/weixin_41347419/article/details/113916436