做网站应怎么缴税,有哪些平台可以发布厂家信息,芝罘网站建设,东莞微信网站建设介绍
是 Apache 的顶级开源项目#xff0c;一个分布式框架#xff0c;主要功能#xff1a;
分布式大数据存储——HDFS 组件分布式大数据计算——MapReduce 组件分布式资源调度——YARN 组件 可以通过它来构建集群#xff0c;完成大数据的存储和计算 学习起来相对简单一个分布式框架主要功能
分布式大数据存储——HDFS 组件分布式大数据计算——MapReduce 组件分布式资源调度——YARN 组件 可以通过它来构建集群完成大数据的存储和计算 学习起来相对简单市场占有率高为后续的其他大数据软件学习打下基础
这里学习的是 Hadoop 开源版
HDFS
Hadoop Distributed File SystemHadoop 分布式文件系统是一个用来存储数据的组件
可以在多台服务器上构建存储集群存储海量数据 为什么需要分布式来存储
单台服务器无法存储太大的数据那就把文件分成多个部分用多台服务器存储多个部分
多台服务器还可以实现性能横向扩展比如带宽、磁盘 IO 、CPU 运算速度等 如何管理多个服务器
中心化和去中心化
在大数据中大部分都是主从模式这个 Hadoop 就是主从模式 基础架构
主角色NameNode是一个独立的进程负责管理整个 HDFS 和 DataNode领导
从角色DataNode 是一个独立的进程主要负责存取数据员工
主角色辅助角色SecondaryNameNode 是一个独立的进程协助主角色合并元数据这就是它唯一的作用老板秘书 经过后面的学习可以这么理解吧
NameNode 负责整个集群的管理元数据的记录和权限的审核DataNode 负责集群中文件的存储SecondaryNameNode 负责合并元数据文件edits fsimage 可以在 IDEA 中下载 Big Data Tools 插件再进行一波配置就能连接上远程的 HDFS 了可以用图形化界面进行文件的增删改查 VMware 集群部署配置
下载好后在 node1 上部署三个角色
另外两个 node部署 DataNode 即可 上传 解压
把 Hadoop 的压缩包上传到 /export/server 中并解压
tar -zxvf hadoop-3.3.4.tar.gz -C /export/server
构建软连接
cd /export/server
ln -s /export/server/hadoop-3.3.4 hadoop 修改配置文件 workers
这个是记录集群中哪几个服务器是从节点 把自带的 localhost 给删除 hadoop-env.sh core-site.xml configuration property name?fs.defaultFS/name valuehdfs:node1:8020/value /property property name?io.file.buffer.size/name value131072/value /property
/configuration hdfs-site.xml
configuration property namedfs.datanode.data.dir.perm/name value700/value /property property namedfs.namenode.name.dir/name value/data/nn/value /property property namedfs.namenode.hosts/name valuenode1,node2,node3/value /property property namedfs.blocksize/name value268435456/value /property property namedfs.namenode.handler.count/name value100/value /property property namedfs.datanode.data.dir/name value/data/dn/value /property
/configuration 创建数据保存的目录 把 node1 中的文件复制给另两个 cd /export/server
scp -r hadoop-3.3.4 node2:/export/server
scp -r hadoop-3.3.4 node3:/export/server
软连接
ln -s /export/server/hadoop-3.3.4 /export/server/hadoop
环境变量
在三台机器都加上这些
vim /etc/profile export HADOOP_HOME/export/server/hadoop
export PATH$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin source /etc/profile 为授权 hadoop 用户
为了用 hadoop 用户启动服务
用 root 在三台机器中执行
chown -R hadoop:hadoop /data
chown -R hadoop:hadoop /export 格式化 HDFS
格式化 namenode
su hadoop
hadoop namenode -format
启动
# 启动HDFS集群
start-dfs.sh
# 停止HDFS集群
stop-dfs.sh 成功标志
在 /data/nn/current 目录中有这些 启动后输入 jpsnode1 有这些node2/3 只有 DataNode 如果无法启动说明配置文件或者权限有问题去看日志问AI基本都能解决 启动后访问这个地址可以看到 web 管理页面Windows 的 hosts 文件有映射
http://node1:9870/ 启动完毕后关机打快照ssh 以后用 hadoop 用户登录 HDFS 操作
一键启动、停止
# 启动HDFS集群
start-dfs.sh
# 停止HDFS集群
stop-dfs.sh 单进程启停 文件系统操作命令
HDFS 的目录形式和 Linux 一样命令名称和 Linux 几乎一样在前面加上特定的关键字即可 创建文件夹
hadoop 会自动识别创建的目录是 HDFS 还是 Linux 的目录的 查看目录中的内容 上传文件到 HDFS 指定目录 查看 HDFS 中文件内容 下载 HDFS 文件 复制 HDFS 文件 追加/删除 HDFS 文件内容
只可以删除和追加内容不能修改文件内容 把 localsrc 中的内容追加到 dst 文件中 移动 HDFS 文件 删除 HDFS 文件 回收站功能 第一个的 1440表示保留时长为一天24 * 60 1440 min
第二个的 120表示 120 分钟检查一次回收站 注意这个配置修改后会立即生效在哪个机器进行配置就在哪生效 web UI 操作 HDFS 但是默认情况下只有只读权限 修改方法
切换到 root 用户修改 core-site.xml 文件然后重启集群
property namehadoop.http.staticuser.user/name valuehadoop/value
/property
后面的话还会有其他的 HDFS 客户端比这个好用 HDFS 权限
文件的权限控制和 Linux 是一样的 这个 supergroup 是启动 namenode 的用户在本文中是 hadoop 用户
谁启动谁就是超级用户root 在 Linux 上超级用户但是在 HDFS 中只是普通用户无特权 HDFS 存储原理
把一个文件拆分为多个部分把各自部分存到不同的服务器
在取出来时在组装起来即可
这种方法的问题文件大小不同不利于管理 block 块与备份
这是文件在 HDFS 中存储的统一单位叫 block一个 block 默认的大小是 256 MB可以修改 如果有个块出问题了怎么办这样文件取出来后是损坏的有点像 raid 0
解决方法对文件进行复制做备份并放到不同服务器中
默认对每个块做两个备份可修改一个文件就有三份 大文件会有很多的 block
修改备份数
在 hdfs-site.xml 中修改这个属性后重启集群
当然一般情况下是不用动它的 block 配置文件
默认一个 block 大小是 256 MB一般都不用改的 临时设置备份数和 fsck 命令
这个 2只针对本次文件上传生效 会输出很多但都很容易看懂 元数据记录-NameNode
HDFS 中有很多的块和文件hadoop 如何记录和整理文件和 block 之间的关系通过 NameNode 写入的两个文件 edits 文件
NameNode 来写 edits 文件
是一个流水账文件记录了 HDFS 中的每一次操作还有本次操作影响的文件和对应的 block
当文件大小达到阈值就会使用新的 edits 文件进行记录 但是这个文件会越来越大所以会有多个 edits 文件
还有就是因为记录的是流水账如果前面记录了新增文件后面又删除了所以查找文件时需要从头到尾遍历所有的 edits 文件这样效率就很低 解决方法只要最后的结果叫做 edits 文件的合并那这种方法和 AOF 文件一样这样的体积就会小很多
最终得到 fsimage 文件
fsimage 文件 定期会进行 edits 文件的合并操作如果不存在则会创建
如果之前已经存在了 fsimage 文件会将全部的 edits 文件和已经存在的 fsimage 文件进行合并形成新的 fsimage 文件 这样查找文件的话主要通过 fsimage 来查询 合并时间设置 谁来进行合并
在 HDFS 架构中NameNode 有个辅助角色SecondaryNameNode
它就是进行数据合并的这也是它唯一的作用不启动它的话文件搜索的速度会越来越慢
它通过 HTTP 获取 edits 和 fsimage合并完成后再提供给 NameNode HDFS 写入数据流程
客户端向 NameNode 发送写入请求NameNode 检查客户端是否具有写入权限HDFS 剩余空间是否充足如果都 OK那么会返回允许写入的消息和要写入的地址某个 DataNode 的 IP客户端向指定的 DataNode 发送数据包写入数据被写入数据的 DataNode会完成数据备份的操作并将这些数据发送给其他的 DataNode客户端通知 NameNode 写入完毕NameNode 向 edits 和 fsimage 文件中写入数据 HDFS 读取文件流程
客户端发送读取请求给 NameNodeNameNode 允许读取并返回该文件的 block 列表客户端根据列表去 DataNode 中读取文件 MapReduce
分布式计算
计算就是根据给定的条件和数据得出相应的结论 多台计算机一起来计算就是分布式计算那这就会涉及多台计算机的管理问题 分散-汇总模式
对于很大的数据每台计算机得到一部分来进行计算算完后将各自的结果汇总到一台计算机中最后由这台计算机计算出最终的结果
典型例子人口普查一层层统计后向上汇报 中心调度-步骤执行模式
让一个节点作为总指挥将任务分成若干个步骤总指挥将任务下发给多个计算机它们执行计算
不同点在执行完某些步骤后不同计算机之间会进行结论的交换后才能继续进行计算
典型例子老板-高管-经理-部门主管-员工这种管理模式 MapReduce 使用的是 分散-汇总模式而更牛的框架spark、flink 使用中心调度-步骤执行模式 介绍
它是 Hadoop 的一个组件用来进行分布式计算的一个框架计算的模式分散-汇总模式
提供了两个接口
Map提供“分散”功能由多个服务器分布式地对数据进行处理Reduce提供“汇总”功能将分布式计算的结果进行汇总
可以使用高级语言实现接口来执行相应的功能
但是现在基本都是使用 Hive 框架它的底层是 MapReduce所以这里只是简单介绍 简单分析执行原理
假如一个文件中有很多的单词现在要统计每个单词出现的次数 现在有三台服务器两台执行 Map 的任务一台执行 Reduce 的任务
会将文件分为多个部分每台机器统计该部分的单词数量最后将结果交给汇总的服务器 Yarn
是 Hadoop 的一个组件用来进行分布式的资源调度
对于多台服务器需要有规划、统一地去调度各种硬件资源提高资源利用率 MapReduce 是基于 Yarn 运行的这样可以得到更好的资源利用率 核心架构
主从架构一主多从
主角色ResourceManger负责集群的资源调度协调调度各个程序所需的资源老板从角色NodeManager负责单台服务器的资源调度各部门经理
一个程序过来申请资源就先去找 ResourceManager 要资源老大再去通知小弟 容器
Yarn 基于容器技术实现资源的精准分配
NodeManager 预先占用一部分资源再将这部分资源提供给程序使用程序使用的资源上限就是容器占用资源的大小不能突破
程序需要 4GB 内存那 NodeManager 就先占用 4GB 内存然后将这些内存给程序使用 辅助架构
这两个辅助角色让 Yarn 集群运行更加稳定
代理服务器-ProxyServer
在 Yarn 运行时也会有一个 Web UI如果在公网上就可能遭受攻击
它的作用就是减少网络攻击的可能性提高安全性
这个推荐单独运行不要和 Yarn 一起运行 历史服务器-JobHistoryServer
记录历史运行的程序信息、产生的日志、提供WEB UI站点供用户使用浏览器查看。
有它的原因是 Yarn 是用容器来分配资源的如果要查看某个容器的日志是比较麻烦的
所以就用它来统一收集并展示浏览器 Yarn 集群部署
ResourceManager 进程作为管理节点
NodeManager 进程作为工作节点
ProxyServer、JobHistoryServer 进程作为辅助节点 而 MapReduce 是运行在 Yarn 容器中的所以无需独立启动进程它也没有独立的进程改改配置文件即可 MapReduce 配置文件
切换为 root 用户来到 /export/server/hadoop-3.3.4/etc/hadoop 目录
修改 mapred-env.sh 文件添加这些东西
# 设置 JDK 路径
export JAVA_HOME/export/server/jdk
# 设置 JobHistoryServer 进程内存为 1G
export HADOOP_JOB_HISTORYSERVER_HEAPSIZE1000
# 设置日志级别为 INFO
export HADOOP_MAPRED_ROOT_LOGGERINFO,RFA
mapred-site.xml添加这些东西
configuration property namemapreduce.framework.name/name valueyarn/value descriptionMapReduce 的运行框架设置为 YARN/description /property property namemapreduce.jobhistory.address/name valuenode1:10020/value description历史服务器地址node1:10020/description /property property namemapreduce.jobhistory.webapp.address/name valuenode1:19888/value description历史服务器web端口为node1的19888/description /property property namemapreduce.jobhistory.intermediate-done-dir/name value/data/mr-history/tmp/value description历史信息在HDFS的记录临时路径/description /property property namemapreduce.jobhistory.done-dir/name value/data/mr-history/done/value description历史信息在HDFS的记录路径/description /property property nameyarn.app.mapreduce.am.env/name valueHADOOP_MAPRED_HOME$HADOOP_HOME/value descriptionMapReduce HOME 设置为 HADOOP_HOME/description /property property namemapreduce.map.env/name valueHADOOP_MAPRED_HOME$HADOOP_HOME/value descriptionMapReduce HOME 设置为 HADOOP_HOME/description /property property namemapreduce.reduce.env/name valueHADOOP_MAPRED_HOME$HADOOP_HOME/value descriptionMapReduce HOME 设置为 HADOOP_HOME/description /property
/configuration
YARN 配置文件
切换为 root 用户来到 /export/server/hadoop-3.3.4/etc/hadoop 目录
修改 yarn-env.sh 文件添加 4 行环境变量
# JDK 环境变量
export JAVA_HOME/export/server/jdk
# HADOOP_HOME
export HADOOP_HOME/export/server/hadoop
# 配置文件路径的环境变量
export HADOOP_CONF_DIR$HADOOP_HOME/etc/hadoop
# export YARN_CONF_DIR$HADOOP_HOME/etc/hadoop
# export YARN_LOG_DIR$HADOOP_HOME/logs/yarn
# 日志文件的环境变量
export HADOOP_LOG_DIR$HADOOP_HOME/logs
修改 yarn-site.xml 文件添加这些东西
configuration property nameyarn.log.server.url/name valuehttp://node1:19888/jobhistory/logs/value description历史服务器URL/description /property
property nameyarn.web-proxy.address/name valuenode1:8089/value descriptionproxy server hostname and port/description /property
property nameyarn.log-aggregation-enable/name valuetrue/value description开启日志聚合可以在浏览器中看到整理好的日志/description /property
property nameyarn.nodemanager.remote-app-log-dir/name value/tmp/logs/value description程序日志HDFS的存储路径/description /property
!-- Site specific YARN configuration properties -- property nameyarn.resourcemanager.hostname/name valuenode1/value descriptionResourceManager设置在node1节点/description /property
property nameyarn.resourcemanager.scheduler.class/name valueorg.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler/value description选择公平调度器/description /property
property nameyarn.nodemanager.local-dirs/name value/data/nm-local/value descriptionNodeManager数据的本地存储路径/description /property
property nameyarn.nodemanager.log-dirs/name value/data/nm-log/value descriptionNodeManager数据日志本地存储路径/description /property
property nameyarn.nodemanager.log.retain-seconds/name value10800/value descriptionDefault time (in seconds) to retain log files on the NodeManager Only applicable if log-aggregation is disabled./description /property
property nameyarn.nodemanager.aux-services/name valuemapreduce_shuffle/value description为MapReduce程序开启shuffle服务/description /property /configuration
把配置文件发送给其他服务器
cd /export/server/hadoop/etc/hadoop
scp * node2:/export/server/hadoop-3.3.4/etc/hadoop/
scp * node3:/export/server/hadoop-3.3.4/etc/hadoop/
一键启动停止
start-yarn.sh
stop-yarn.sh
启动历史服务器
mapred --daemon start historyserver 单独控制进程
$HADOOP_HOME/bin/yarn此程序也可以用以单独控制所在机器的进程启停
yarn --daemon (start|stop) (resourcemanager|nodemanager|proxyserver) 查看结果 打快照
访问 http://node1:8088/如果能看到页面说明一切 OK
关机打快照速度会很快 提交 MapReduce 的任务到 Yarn 中执行
这个倒是只需要执行命令即可毕竟现在很少使用 MapReduce 进行计算spark flink 的效率是它的上百倍
这里就是演示
h第三章-08-[实操]提交MapReduce任务到YARN执行_哔哩哔哩_bilibili