Hadoop 介绍 Hadoop 概述 Hadoop 是什么
Apache 基金会下的一个分布式系统框架
解决海量数据存储和分析计算
优势
高可靠性: Hadoop 底层维护多个数据副本,即使某个存储出现故障,也不会导致数据丢失
高扩展性: 当集群任务较多资源吃紧时,可以装载新的节点解决当前问题(如 双十一 618)。
高效性: 在 MapReduce 的思想下, Hadoop 是并行工作的,以加快任务处理的速度。
高容错性: 能够自动将失败的任务重新分配
(以上问题需要回答底层是如何解决的)
Hadoop 的组成
MapReduce (分析计算)
Yarn (资源调度 2.x 之后出现,之前 资源调度也由 Map Reduce 负责)
HDFS (Hadoop Distributed File System)
Common 辅助工具
Hadoop 常用端口号
Hadoop 3.x
Hadoop 2.x
访问 HDFS 端口
9870
50070
访问 MR 执行情况端口
8088
8088
历史服务器
19888
19888
客户端访问集群端口
8020
9000
端口都可以在相关配置文件中进行修改
Hadoop 配置文件以及简单的 Hadoop 集群搭建 配置文件 Hadoop 3.x: core-site.xml hdfs-site.xml marped-site.xml yarn-site.xml workers
Hadoop 2.x: core-site.xml hdfs-site.xml marped-site.xml yarn-site.xml slaves
简单的集群搭建过程 JDK 安装 保证 Linux 系统下有和你所需要 Hadoop 的对应的 Java 版本环境
配置 SSH 免密登录 便于 Hadoop 不同主机之间的文件的快速传输
编写集群文件分发脚本实现上述要求 使用 rsync 命令
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 #!/bin/bash if [ $# -lt 1 ]then echo Not Enough Arguement! exit ;fi for host in hadoop102 hadoop103 hadoop104do echo ==================== $host ==================== for file in $@ do if [ -e $file ] then pdir=$(cd -P $(dirname $file ); pwd ) fname=$(basename $file ) ssh $host "mkdir -p $pdir " rsync -av $pdir /$fname $host :$pdir else echo $file does not exists! fi done done
配置 Hadoop 核心文件 分配 Hadoop 各组件所在位置
hadoop102
hadoop103
hadoop104
HDFS
NameNode, DataNode
DataNode
SecondaryNameNode, DataNode
YARN
NodeManager
ResourceManager NodeManager
NodeManager
配置 core-site.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 <?xml version="1.0" encoding="UTF-8" ?> <?xml-stylesheet type="text/xsl" href="configuration.xsl" ?> <configuration > <property > <name > fs.defaultFS</name > <value > hdfs://hadoop102:8020</value > </property > <property > <name > hadoop.tmp.dir</name > <value > /opt/module/hadoop-3.1.3/data</value > </property > <property > <name > hadoop.http.staticuser.user</name > <value > albert</value > </property > </configuration >
配置 hdfs-site.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 <?xml version="1.0" encoding="UTF-8" ?> <?xml-stylesheet type="text/xsl" href="configuration.xsl" ?> <configuration > <property > <name > dfs.namenode.http-address</name > <value > hadoop102:9870</value > </property > <property > <name > dfs.namenode.secondary.http-address</name > <value > hadoop104:9868</value > </property > </configuration >
配置 yarn-site.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 <?xml version="1.0" encoding="UTF-8" ?> <?xml-stylesheet type="text/xsl" href="configuration.xsl" ?> <configuration > <property > <name > yarn.nodemanager.aux-services</name > <value > mapreduce_shuffle</value > </property > <property > <name > yarn.resourcemanager.hostname</name > <value > hadoop103</value > </property > <property > <name > yarn.nodemanager.env-whitelist</name > <value > JAVA_HOME,HADOOP_COMMON_HOME,HADOOP_HDFS_HOME,HADOOP_CONF_DIR,CLASSPATH_PREPEND_DISTCACHE,HADOOP_YARN_HOME,HADOOP_MAP RED_HOME</value > </property > </configuration >
配置 mapred-site.xml
1 2 3 4 5 6 7 8 9 <?xml version="1.0" encoding="UTF-8" ?> <?xml-stylesheet type="text/xsl" href="configuration.xsl" ?> <configuration > <property > <name > mapreduce.framework.name</name > <value > yarn</value > </property > </configuration >
配置 workers
1 [albert@hadoop102 hadoop]$ vim /opt/m odule/hadoop-3.1.3/ etc/hadoop/ workers
1 2 3 4 5 hadoop102 hadoop103 hadoop104
在上述某些配置文件中追加配置
配置历史服务器
配置 mapred-site.xml
1 2 3 4 5 6 7 8 9 10 <property > <name > mapreduce.jobhistory.address</name > <value > hadoop102:10020</value > </property > <property > <name > mapreduce.jobhistory.webapp.address</name > <value > hadoop102:19888</value > </property
配置日志的聚集
配置 yarn-site.xml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <property > <name > yarn.log-aggregation-enable</name > <value > true</value > </property > <property > <name > yarn.log.server.url</name > <value > http://hadoop102:19888/jobhistory/logs</value > </property > <property > <name > yarn.log-aggregation.retain-seconds</name > <value > 604800</value > </property >
格式化 namenode
启动集群 如果集群是第一次启动,需要在 hadoop102 节点格式化 NameNode (注意: 格式化 NameNode, 会产生新的集群 id, 导致 NameNode 和 DataNode 的集群 id 不一致,集群找不到已往数据。 如果集群在运行过程中报错,需要重新格式化 NameNode 的话, 一定要先停止 namenode 和 datanode 进程, 并且要删除所有机器的 data 和 logs 目录,然后再进行格式化。)
1 [albert@hadoop102 hadoop-3.1 .3 ]$ hdfs namenode -format
启动 HDFS
1 [albert@hadoop102 hadoop-3.1 .3 ]$ sbin/start-dfs.sh
在配置了 ResourceManager 的节点(hadoop103) 启动 YARN
1 [albert@hadoop103 hadoop-3.1 .3 ]$ sbin/start-yarn.sh
Web 端查看 HDFS 的 Nam eNode
(a)浏览器中输入: http://hadoop102:9870
(b)查看 HDFS 上存储的数据信息
Web 端查看 YARN 的 ResourceManager
(a)浏览器中输入: http://hadoop103:8088
(b)查看 YARN 上运行的 Job 信息
使用脚本启动/关闭 Hadoop
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 #!/bin/bash if [ $# -lt 1 ]then echo "No Args Input..." exit ;fi case $1 in "start" ) echo " =================== 启动 hadoop 集群 ===================" echo " --------------- 启动 hdfs ---------------" ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/start-dfs.sh" echo " --------------- 启动 yarn ---------------" 尚硅谷大数据技术之 Hadoop(入门) ————————————————————————————— 更多 Java –大数据 –前端 –python 人工智能资料下载,可百度访问:尚硅谷官网 ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/start-yarn.sh" echo " --------------- 启动 historyserver ---------------" ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon start historyserver" ;;"stop" ) echo " =================== 关闭 hadoop 集群 ===================" echo " --------------- 关闭 historyserver ---------------" ssh hadoop102 "/opt/module/hadoop-3.1.3/bin/mapred --daemon stop historyserver" echo " --------------- 关闭 yarn ---------------" ssh hadoop103 "/opt/module/hadoop-3.1.3/sbin/stop-yarn.sh" echo " --------------- 关闭 hdfs ---------------" ssh hadoop102 "/opt/module/hadoop-3.1.3/sbin/stop-dfs.sh" ;; *)echo "Input Args Error..." ;;esac
查看三台服务器 Java 进程脚本: jpsall
1 2 3 4 5 6 #!/bin/bash for host in hadoop102 hadoop103 hadoop104do echo =============== $host =============== ssh $host jpsdone
注意: 记得给脚本运行权限 chmod