大数据学习之路(七)——学习小结

本文涉及的产品
云原生网关 MSE Higress,422元/月
云原生大数据计算服务 MaxCompute,5000CU*H 100GB 3个月
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 个人目前学习的总结,如有问题,发现的时候会修正,用于个人回顾,有错误的地方欢迎留言指出 通过前几篇的学习

hadoop单节点伪分布式
hadoop完全分布式
hadoop完全分布式高可用(HA) zookeeper
yarn高可用
hdfs
MapReduce
了解了hadoop基本的搭建,和前期可能遇到的问题。
以下是对各个功能组件的理解。

1.HADOOP
Hadoop分布式文件系统(HDFS)是一种分布式文件系统,设计用于在商品硬件上运行。它与现有的分布式文件系统有许多相似之处。但是,与其他分布式文件系统的差异很大。HDFS具有高度容错能力,旨在部署在低成本硬件上。HDFS提供对应用程序数据的高吞吐量访问,适用于具有大型数据集的应用程序。HDFS放宽了一些POSIX要求,以启用对文件系统数据的流式访问。HDFS最初是作为Apache Nutch网络搜索引擎项目的基础架构而构建的。HDFS是Apache Hadoop Core项目的一部分。

2.NameNode和DataNodes
HDFS具有主/从架构。一个HDFS集群包含一个NameNode,一个主服务器,用于管理文件系统名称空间并管理客户端对文件的访问。此外,还有许多DataNode,通常是群集中的每个节点一个DataNode,用于管理连接到它们所运行的节点的存储。HDFS公开文件系统名称空间并允许用户数据存储在文件中。在内部,文件被分成一个或多个块,大数据学习扣裙74 零零【加41 三8 1】这些块存储在一组DataNode中。NameNode执行文件系统命名空间操作,如打开,关闭和重命名文件和目录。它还确定块到DataNode的映射。DataNode负责提供来自文件系统客户端的读取和写入请求。DataNode还执行块创建,删除。 image

NameNode和DataNode是设计用于在商品机器上运行的软件。这些机器通常运行GNU / Linux操作系统(OS)。HDFS使用Java语言构建; 任何支持Java的机器都可以运行NameNode或DataNode软件。使用高度可移植的Java语言意味着HDFS可以部署在各种机器上。典型的部署有一台只运行NameNode软件的专用机器。群集中的每台其他机器运行DataNode软件的一个实例。该体系结构不排除在同一台机器上运行多个DataNode,但在实际部署中很少出现这种情况。

集群中单个NameNode的存在极大地简化了系统的体系结构。NameNode是所有HDFS元数据的仲裁者和存储库。该系统的设计方式是用户数据永远不会流经NameNode。

总而言之,namenode负责记录文件存储在datanode上的位置,datanode则负责存储数据

  1. Zookeeper
    ZooKeeper是一个分布式的开源协调服务,用于分布式应用程序。它公开了一组简单的原语,分布式应用程序可以构建这些原语,以实现更高级别的服务,以实现同步,配置维护以及组和命名。它的设计易于编程,并使用在熟悉的文件系统目录树结构之后设计的数据模型。它运行在Java中,并且对Java和C都有绑定。

众所周知,协调服务很难做到正确。它们特别容易出现诸如竞态条件和死锁等错误。ZooKeeper背后的动机是减轻分布式应用程序从头开始实施协调服务的责任。

总而言之,zookeeper负责保证各个服务的高可用,我们在搭建伪分布式的时候存在SN,用于进行的edits和fsimage的合并,但是当namenode挂掉后,SN并不能起到替代NN的作用,为了保证项目中namenode的高可用,我们接入zookeeper,并启用多台NN,其中有一台NN处于active状态,其他的standby,而standby的节点不仅起到了备份的作用,还承担了SN的功能。很多架构都用到了zookeeper,来保证他们的高可用。
4.Yarn
YARN的基本思想是将资源管理和作业调度/监控的功能分解为单独的守护进程。这个想法是有一个全局的ResourceManager(RM)和每个应用程序的ApplicationMaster(AM)。应用程序可以是单个作业,也可以是DAG作业。

ResourceManager和NodeManager构成了数据计算框架。ResourceManager是仲裁系统中所有应用程序之间资源的最终权威机构。NodeManager是负责容器的每机器框架代理,监视它们的资源使用情况(cpu,内存,磁盘,网络),并将其报告给ResourceManager / Scheduler。 http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-site/yarn_architecture.gif

每个应用程序的ApplicationMaster实际上是一个特定于框架的库,并负责从ResourceManager协商资源,并与NodeManager一起工作来执行和监视这些任务。

ResourceManager有两个主要组件:Scheduler和ApplicationsManager。

调度程序负责将资源分配给各种正在运行的应用程序,这些应用程序受到容量,队列等熟悉的限制。调度程序是纯调度程序,因为它不会监视或跟踪应用程序的状态。此外,由于应用程序故障或硬件故障,它无法保证重启失败的任务。调度器根据应用程序的资源需求执行其调度功能; 它是基于资源容器的抽象概念来实现的,容器包含内存,CPU,磁盘,网络等元素。

调度程序有一个可插拔策略,负责在各种队列,应用程序等之间对集群资源进行分区。当前调度程序(如CapacityScheduler和FairScheduler)将是插件的一些示例。

ApplicationsManager负责接受作业提交,协商执行特定于应用程序的ApplicationMaster的第一个容器,并提供失败时重新启动ApplicationMaster容器的服务。每个应用程序的ApplicationMaster负责从调度程序中协商适当的资源容器,跟踪其状态并监视进度。

hadoop-2.x中的MapReduce 与以前的稳定版本(hadoop-1.x)保持API兼容性。这意味着只需重新编译,所有MapReduce作业仍应在YARN之上保持不变。

YARN支持的概念,资源预留通过ReservationSystem,即允许用户在指定时间资源和时间的限制(例如,截止日期),以及后备资源的配置文件,以确保重要jobs.The可预见的执行组件ReservationSystem跟踪资源过时,对预留执行准入控制,并动态指示底层调度程序确保预留满员。

为了将YARN扩展到几千个节点之外,YARN 通过YARN Federation功能支持Federation的概念。Federation允许透明地将多个YARN(子)群集在一起,并使它们看起来像一个单一的大型群集。这可以用于实现更大规模,和/或允许将多个独立的群集一起用于非常大的工作,或者对于所有人都具有容量的租户。

总而言之,yarn是我们编写MapReduce必备的组件,起到了资源调度的作用,他还保证了datanode的高可用,而zookeeper又保证了yarn的高可用。

  1. MapReduce
    https://images2015.cnblogs.com/blog/1110462/201703/1110462-20170330105359920-995323028.png

https://img-blog.csdn.net/2018063020501181?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzMxMzQzNTgx/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70
Hadoop MapReduce是一个软件框架,用于轻松编写应用程序,以可靠的容错方式在大型群集(数千个节点)的大型商业硬件上并行处理大量数据(多TB数据集)。

MapReduce 作业通常将输入数据集分成独立的块,由地图任务以完全平行的方式进行处理。框架对映射的输出进行排序,然后输入到reduce任务。通常,作业的输入和输出都存储在文件系统中。该框架负责调度任务,监控它们并重新执行失败的任务。

通常,计算节点和存储节点是相同的,即MapReduce框架和Hadoop分布式文件系统(请参阅HDFS体系结构指南)在同一组节点上运行。该配置允许框架在数据已经存在的节点上有效地调度任务,从而在整个集群中产生非常高的聚合带宽。

MapReduce框架由单个主资源管理器,每个集群节点的一个从属NodeManager和每个应用程序的MRAppMaster组成(参见YARN体系结构指南)。

最小程度上,应用程序通过实现适当的接口和/或抽象类来指定输入/输出位置并提供映射和减少函数。这些和其他作业参数构成作业配置。

然后,Hadoop 作业客户端将作业(jar /可执行文件等)和配置提交给ResourceManager,然后负责将软件/配置分发给从服务器,安排任务并监控它们,向作业提供状态和诊断信息,客户。

尽管Hadoop框架是用Java™实现的,但MapReduce应用程序不需要用Java编写。

总而言之,MapReduce始终计算架构,他负责分布式的运算数据,他的数据来源可以不仅仅来自于hdfs,传统的计算是以计算服务为主,将数据放置在计算服务上进行计算,而如今数据量飞速增长的时代,这几乎是一件不可能的事情,MapReduce就是为了解决这个现象而产生的计算框架,他执行在各个数据节点,并发计算,保证了数据处理的速度。
(input) -> map -> -> combine -> -> partition-> sort -> group -> reduce -> (output)
中间所有的环节,我们都可以根据我们自己的业务逻辑重写

  1. map
    逐行得到元数据并进行拆分
  2. combine
    可以提前对map节点中的部分数据进行排序和合并,但是必须保证他的inputkey和outputkey一致,inputvalue和outputvalue一致,combine可以用于减少reduce的压力。
  3. partition
    可以根据自己的规则将数据均匀划分,分配给节点进行运算,默认是hash值%节点数。
  4. sort
    可以根据自己的项目需求重写排序规则,当你的mapreduce不为简单数据时,你可以对他进行重写,已得到你想要的排序效果
  5. group
    将排序好的数据进行分组,提供给reduce进行计算,例如,你的key是a-b-c形式的数据,你想将ab相同的分为同一组递交给reduce,那么你可以在这里修改group的规则。
  6. 自定义结构类型
    必须 implements WritableComparable,实现write(写序列化)、readFields(度序列化)、compareTo(比较)
  7. sort、group、combine必须继承WritableComparator,通过重写compare方法实现自己的逻辑
  8. combine和reduce一样,需要继承Reducer
相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
SaaS 模式云数据仓库必修课
本课程由阿里云开发者社区和阿里云大数据团队共同出品,是SaaS模式云原生数据仓库领导者MaxCompute核心课程。本课程由阿里云资深产品和技术专家们从概念到方法,从场景到实践,体系化的将阿里巴巴飞天大数据平台10多年的经过验证的方法与实践深入浅出的讲给开发者们。帮助大数据开发者快速了解并掌握SaaS模式的云原生的数据仓库,助力开发者学习了解先进的技术栈,并能在实际业务中敏捷的进行大数据分析,赋能企业业务。 通过本课程可以了解SaaS模式云原生数据仓库领导者MaxCompute核心功能及典型适用场景,可应用MaxCompute实现数仓搭建,快速进行大数据分析。适合大数据工程师、大数据分析师 大量数据需要处理、存储和管理,需要搭建数据仓库?学它! 没有足够人员和经验来运维大数据平台,不想自建IDC买机器,需要免运维的大数据平台?会SQL就等于会大数据?学它! 想知道大数据用得对不对,想用更少的钱得到持续演进的数仓能力?获得极致弹性的计算资源和更好的性能,以及持续保护数据安全的生产环境?学它! 想要获得灵活的分析能力,快速洞察数据规律特征?想要兼得数据湖的灵活性与数据仓库的成长性?学它! 出品人:阿里云大数据产品及研发团队专家 产品 MaxCompute 官网 https://www.aliyun.com/product/odps 
相关文章
|
SQL 资源调度 数据库
数仓学习---14、大数据技术之DolphinScheduler
数仓学习---14、大数据技术之DolphinScheduler
|
21天前
|
分布式计算 大数据 Java
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
大数据-87 Spark 集群 案例学习 Spark Scala 案例 手写计算圆周率、计算共同好友
33 5
|
21天前
|
分布式计算 关系型数据库 MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
大数据-88 Spark 集群 案例学习 Spark Scala 案例 SuperWordCount 计算结果数据写入MySQL
43 3
|
21天前
|
存储 分布式计算 算法
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
大数据-106 Spark Graph X 计算学习 案例:1图的基本计算、2连通图算法、3寻找相同的用户
45 0
|
SQL NoSQL Java
Redis学习---大数据技术之Redis(NoSQL简介、Redis简介、Redis安装、五大数据类型、相关配置、持久化)
Redis学习---大数据技术之Redis(NoSQL简介、Redis简介、Redis安装、五大数据类型、相关配置、持久化)
|
17天前
|
数据采集 数据可视化 大数据
大数据体系知识学习(三):数据清洗_箱线图的概念以及代码实现
这篇文章介绍了如何使用Python中的matplotlib和numpy库来创建箱线图,以检测和处理数据集中的异常值。
26 1
大数据体系知识学习(三):数据清洗_箱线图的概念以及代码实现
|
8天前
|
存储 SQL 分布式计算
大数据学习
【10月更文挑战第15天】
15 1
|
30天前
|
分布式计算 大数据 Hadoop
大数据学习
【10月更文挑战第2天】大数据学习
78 16
|
17天前
|
分布式计算 大数据 Linux
大数据体系知识学习(二):WordCount案例实现及错误总结
这篇文章介绍了如何使用PySpark进行WordCount操作,包括环境配置、代码实现、运行结果和遇到的错误。作者在运行过程中遇到了Py4JJavaError和JAVA_HOME未设置的问题,并通过导入findspark初始化和设置环境变量解决了这些问题。文章还讨论了groupByKey和reduceByKey的区别。
13 1
|
17天前
|
分布式计算 Hadoop 大数据
大数据体系知识学习(一):PySpark和Hadoop环境的搭建与测试
这篇文章是关于大数据体系知识学习的,主要介绍了Apache Spark的基本概念、特点、组件,以及如何安装配置Java、PySpark和Hadoop环境。文章还提供了详细的安装步骤和测试代码,帮助读者搭建和测试大数据环境。
32 1