1.環境の説明
- Apache Hadoop3.1.3バージョンに基づく
- JDK環境に依存します
- Hadoop3.1.3ダウンロードアドレス
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