2021-02-21 12:41:33

Hadoop入门教程(一):Hadoop 是什么 Hadoop 由什么组成


Hadoop入门教程(一):Hadoop 是什么 Hadoop 由什么组成

在上一大章节我们讲了大数据仓库的概念,我们了解了数仓的建设思想,接下来我们就开始让我们的思想慢慢变为现实,承载这一切的基础就是 Hadoop 生态圈中的各种大数据组件,慢慢形成我们的大数据仓库和平台。

Hadoop是什么

Hadoop是一个由Apache基金会所开发的分布式系统基础架构。注意它是基础架构,也就是说他是一个最底层的架构,单独使用它是做不了什么的。它提供了一个海量数据存储和分析计算的能力。广义上来说Hadoop这个词代表了Hadoop生态圈。

Hadoop三大发行版本

Apache Hadoop

Apache版本最原始(最基础)的版本,对于入门学习最好。

官网地址:http://hadoop.apache.org

下载地址:https://archive.apache.org/dist/hadoop/common/

Cloudera Hadoop

2008年成立的 Cloudera 是最早将 Hadoop 商用的公司,为合作伙伴提供Hadoop的商用解决方案。2009年 Hadoop 的创始人 Doug Cutting 也加盟 Cloudera 公司。Cloudera产品主要为CDH。

官网地址:https://www.cloudera.com/downloads/cdh.html

下载地址:https://docs.cloudera.com/documentation/enterprise/6/release-notes/topics/rg_cdh_6_download.html

Hortonworks

2011年成立的 Hortonworks 是雅虎与硅谷风投公司 Benchmark Capital 合资组建的。公司成立之初就吸纳了大约25名至30名专门研究Hadoop的雅虎工程师,上述工程师均在2005年开始协助雅虎开发Hadoop,贡献了Hadoop80%的代码。主打产品是Hortonworks Data Platform(HDP)。

Hadoop组成

Hadoop 在 1.X 和 2.x 版本有一些区别,Hadoop1.X 由Common(辅助工具)、HDFS(数据存储)、MapReduce(计算+调度)构成。

Hadoop2.x 由Common(辅助工具)、HDFS(数据存储)、Yarn(资源调度)、MapReduce(计算)构成。

Hadoop2.x 比 Hadoop1.X 多了一个 Yarn(资源调度),并且 MapReduce 只负责计算工作。

HDFS简介

Hadoop分布式文件系统(HDFS)是非常重要的核心功能,有着高容错性的特点,将文件分块存储在分布式的节点中,并且是冗余存储,即使单个节点发生灾难性事故,也不会丢失数据。

  • NameNode(nn):存储文件的元数据,如文件名,文件目录结构,文件属性,以及每个文件的块列表和块所在的DataNode。
  • DataNode(dn):在本地文件系统中存储文件块数据,以及块数据的校验和。
  • Secondary NameNode(2nn):用来监控HDFS状态的辅助后台程序,每隔一段时间获取HDFS元数据的快照。

NameNode可以理解为数据的索引,DataNode存储数据本身,Secondary NameNode是索引的快照。由于这里只是简单介绍Hadoop,后续会详细讲解,此处不展开说了。

YARN简介

上面我们说了 Hadoop2.x 中增加了 Yarn(资源调度),那资源调度是在调度什么呢?在计算机中资源就是CPU和内存,CPU和内存都是有上限的,所以需要分配给更需要的进程来使用。

ResourceManager(RM)就是资源管理者,外部的客户端提交作业请求都会先到 ResourceManager(RM),他代表了集群所有的资源,并监控 NodeManager、启动或监控ApplicationMaster。

NodeManager(NM) 只管理一个节点的资源,处理来自ResourceManager(RM)的命令和来自ApplicationMaster的命令。

ApplicationMaster(AM)负责数据的切分、为应用程序申请资源分配内部任务和任务的监控容错。当一个任务提交到 ResourceManager(RM)时就会选择一个节点启动一个ApplicationMaster(AM)来负责这个任务的跟进,也就是对这个任务的一个负责人。也就是说有一个作业任务就会有对应的一个ApplicationMaster(AM)来跟进这个作业任务的执行和调度。

Container 是对资源的一个抽象封装,里面会包含内存、CPU、磁盘、网络等资源,NodeManager(NM) 就是通过打开和关闭 Container 来调度资源的。

MapReduce简介

MapReduce其实是两个部分,分为 Map 和 Reduce,可以说是一种思想和处理算法。

Map 负责将数据拆分成很多份,例如我们有100T的数据,在里面找一个数据,Map 就是先将这 100T数据拆分成一千份,每份100G,分发给各个节点,这样就将100T的数据转换成100G了,一千个节点同时查找提高效率。

Reduce 就是将上面拆分给一千个节点的查询结果汇总起来,把大家的结果收集起来,成为最终的结果。

这里只做开门见山的简单介绍,后面会详细说明,此处不展开说了。


商业用途请联系作者获得授权。
版权声明:本文为博主「任霏」原创文章,遵循 CC BY-NC-SA 4.0 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://www.renfei.net/posts/1003452
评论与留言
以下内容均由网友提交发布,版权与真实性无法查证,请自行辨别。

本站有缓存策略,时间约2小时后能看到您的评论。本站使用自动审核机制,如果您的内容包含广告/谩骂/恐怖/暴力/涉政等不和谐内容将无法展示!


本站有缓存策略,时间约2小时后能看到您的评论。本站使用自动审核机制,如果您的内容包含广告/谩骂/恐怖/暴力/涉政等不和谐内容将无法展示!

关注任霏博客
扫码关注「任霏博客」微信订阅号
微博:任霏博客网
Twitter:@renfeii
Facebook:任霏
最新留言 不更新? 优先级低的并不代表一定要等到优先级高的运行完才能运行,只是cpu分配的资源少了而已。 /lib64/ld-linux-x86-64.so.2: No such file or directory 报了这个错误,怎么解决呢 对于一个布道 DevOps 多年的选手来讲,看到这个报告,还是想继续布道布道。虽然是各种对比哈,但是我感觉与 DevOps 太像了(可能是职业病犯了哈)。首先声明本人不是GitLab 用户(因为不免费,没法薅羊毛啊),本人是 GitHub 忠实用户。 首先,你这是田忌赛马的对比,中文对比一事,着实有点可笑 1 土生土长和外来户能立马拉到同一个起跑线上吗? 2 一个真正的开发者应该去提升自己的英语能力,而不是拿全部是中文文档说事。大家都知道现在开源非常热,开发者是开源的主力军,如果要贡献优秀的开源项目(诸如Linux 内核,Kubernetes),英语就是个硬门槛。如果我是你,我倒希望公司内部的系统是英文的,最起码能让我锻炼英语,在看开源项目文档的时候不至于看不懂,提 PR 的时候不至于提交代码的内容描述不清楚而没法被 Merge。 其次,阿里云效、Coding 大家都知道背后站的是谁,很容易造成厂商绑定,现在很多企业都希望不要被厂商绑定。 再者,有一个点需要明白,GitLab 是一个 DevOps 平台,什么叫做 DevOps 平台(DevOps 走到现在,确切的说应该叫做 DevSecOps)?就是覆盖了软件开发生命周期全阶段的,从项目管理到代码托管到安全再到日志监控、甚至包含现在的云原生能力。不仅仅是说一个 CI/CD 就能概括的了的。这一点是 DevOps 布道的真正误区,我见过太多了,我在这儿再布道一哈,CI/CD 不等于 DevOps,他只是 DevOps 落地实践的核心能力。仅凭借一个 CI/CD 能有现成模版就判断出哪个好坏,过于牵强了吧。相信大家真正到项目用的时候,模版是满足不了要求的吧,毕竟大家都很特性化。 最后,还是一个很热的话题,开源,open source。GitLab 是开源的,Coding 和 云效这方面我没看到相关的开源内容(可能是我孤陋寡闻)。大家可以看看国内有多少用 GitLb 的,GitLab 的 CE 版,然后私有化部署,就是很多公司的代码托管 + DevOps 解决方案。 个人愚见,做一些对比报告的时候,还是先需要明白这个产品的定位,去深入挖掘一些真正有意义的对比,这样的对比报告才能有意义。作为一个常年写博客、文章的人来说。你写的每个字、每篇文章,你要想到你的思想会影响到别人。有可能因为你的片面之词,让别人错失一些学习的好机会。 docker run 那一长串后,出来一个字符串,然后去 docker containers 下面看 显示 exited(1);logs 下就一行错误 initdb failed 感谢🙏,第一个问题是空格的问题应该,我逐字敲完后可以构建了.第二个问题是我docker环境的问题,docker更新为最新版后需要重置配置文件.现已经正常使用,再次感谢您的分享和您的细心解答,期待下次相遇😄 还有一个问题可以请教下吗?就是我在容器里建文件夹没有权限,su root后密码不知道是多少,sudo mkdir xxx 提示我,没有sudo命令,请问有好的解决方法吗?谢谢解答 -v 后面可以指定文件吗 我的也是报错,还有。我执行了这个:@localhost kingbase-es-v8-r3-docker % docker run -d --name kingbase -p 54321:54321 -e SYSTEM_PWD=SYSTEM -v /opt/kingbase/data:/opt/kingbase/data -v /opt/kingbase:/opt/kingbase/Server/bin kingbase:v8r3 docker: 'run -d --name kingbase -p 54321:54321 -e SYSTEM_PWD=SYSTEM -v /opt/kingbase/data:/opt/kingbase/data -v /opt/kingbase:/opt/kingbase/Server/bin kingbase:v8r3' is not a docker command. See 'docker --help' 麻烦帮忙看下,是不是我写的命令有问题,还是版本问题,谢谢啦 请问我build的时候一直报错,是资源没了吗?failed to solve with frontend dockerfile.v0: failed to create LLB definition: failed to do request: Head "https://reg-mirror.qiniu.com/v2/library/centos/manifests/7?ns=docker.io": Moved Permanently 能不能在代码那里详细解释一下啊,没完全懂呀 en