1.前言

在大数据时代,Hadoop有着得天独厚的优势。然而,每个企业的技术储备和需求特点不同,他们希望从海量的客户数据中挖掘真正的商业价值,像Google、Facebook、Twitter等这样的企业更是Hadoop的最早获益者。那么,今天我们就来聊一聊,万亿数据下Hadoop的核心竞争力。

2.什么是Hadoop?

在了解Hadoop之前,不得不说的一个名词——“大数据”。大数据是时代发展和技术进步的产物,大数据的特征如下:

  • 庞大的数据容量;
  • 结构化、半结构化、非结构化的数据类型;
  • 高效的处理速度
  • 高质量的数据

Hadoop由Apache基金会孵化并开源的分布式系统,用户可以在不了解分布式底层设计的情况下,开发分布式应用程序,充分利用集群的优势来进行高速的运算和存储。自从Hadoop作为Apache基金会开源项目发布以来,它一直备受青睐,这得益于Hadoop的可扩展性、低成本、灵活的处理模式等特点。

3.万亿数据下的难点?

数据量达到万亿规模,这已经是一个很庞大的数据量了。这里难点我们可以分为两种情况,一种是原理上不知道怎么处理,没有具体的实施方案,这个属于技术难题。另一种,虽然有具体的实施方案,也明白其中的原理,但是数据规模太过庞大,这个属于工程上的难点。

数据规模庞大带来的难点主要体现在分布式的要求,因为单个节点不足以在有效的成本和规定的时间内处理完所有的数据。简而言之:

  • 并行化问题:处理数据的应用程序要改造成适合并行的方式;
  • 资源分配管理问题:如何有效的管理提交任务的资源,内存、网络、磁盘等;
  • 容错问题:随着机器数量的增加,可靠性如何保证,例如部分机器硬件出错导致不可用,最终结果的完整性和正确性如何保证。

4.Hadoop的组成部分有哪些?能做什么?

截止至本篇文章,Hadoop社区发布了Hadoop-3.2.0版本,其核心组成部分包含:基础公共库(Common)、分布式文件存储系统(HDFS)、分布式计算框架(MapReduce)、分布式资源调度与管理系统(YARN)、分布式对象存储框架(OZone)、机器学习引擎(Submarine)。

4.1 Hadoop Common

Hadoop Common属于基础公共库,它是Hadoop最底层的一个模块,为Hadoop各个子项目提供各种工具,例如配置文件、操作日志等。

4.2 Hadoop Distributed File System

Hadoop Distributed File System简称HDFS,它是Hadoop的一个分布式文件系统,类似于Amazon的S3系统,Google的GFS系统。

HDFS可以处理分布在集群中的大文件,它通过将文件分成数据块来完成此操作。同时,我们可以并行访问分布式数据(例如,在进行数据处理时),各个数据节点进行数据交互形成数据块的副本。

4.3 Hadoop YARN

YARN是Hadoop的一个分布式资源管理框架,可以为上层应用提供统一的资源管理与调度。通过引入YARN,Hadoop集群在资源利用率、资源统一管理、数据共享等方面带来了巨大的好处。

Client应用提交任务到YARN,流程如下:

  1. Client发送请求给RM
  2. ResourceManager(简称RM)返回ApplicationId给Client
  3. Client发送ApplicationId、QueueName、用户等信息给RM
  4. RM寻找合适的Container,并将Client提交的信息给NodeManager(简称NM)
  5. 然后在NM中启动AM,RM给AM分配最大最小资源
  6. AM从RM那里获取的可使用资源来申请一些Container
  7. Job在Container中执行,由AM返回任务进度,任务执行完成后,AM向RM发送结束任务信息然后退出

4.4 Hadoop MapReduce

MapReduce是Hadoop的一个分布式计算框架,用来处理海量数据。同时,还可以使用MapReduce框架来实现一些算法,例如统计单词频率、数据去重、排序、分组等。

4.5 Hadoop OZone

Ozone是Hadoop的可扩展、冗余和分布式对象存储。除了扩展到数十亿不同大小的对象外,OZone还能在Kubernetes和YARN等容器环境中有效发挥作用。

  • 可扩展性:OZone设计之初能够扩展到数百亿个文件和数据块,并且在将来会扩展到更多;
  • 一致性:OZone是一个强一致性对象存储,它所使用的协议是类似于RAFT来实现的;
  • 云集成:OZone设计之初能够与YARN和Kubernetes集成使用;
  • 安全性:OZone能够与Kerberos集成,用于控制访问权限,并支持TDE和线上加密;
  • 多协议支持:OZone能够支持不同的协议,例如S3、HDFS;
  • 高可用:OZone是一个多副本系统,用于保证数据高可用性。

4.6 Hadoop Submarine

Submarine是一个允许基础设施工程师/数据科学家在资源管理平台(如YARN)上运行深度学习应用程序(Tensorflow,Pytorch等)的项目。

  • 在已有集群运行:Submarine支持在YARN、Kubernetes或者其他类似的调度框架中使用;
  • 支持多种框架:Submarine支持多种机器学习框架,例如TensorFlow、Pytorch、MxNet等;
  • 覆盖整个ML:Submarine不仅仅是一个机器学习引擎,它涵盖了整个机器学习过程,例如算法开发、模型批量训练、模型增量训练、模型在线服务和模型管理。

5.Hadoop的核心竞争力在哪?

Hadoop如此受人喜欢,很大程度上取决于用户对大数据存储、管理和分析需求的迫切。大数据是目前很多企业面临的一个挑战,由于数据量的庞大、数据类型的复杂 ,特别是非结构化或者半结构化的数据远远多于结构化的数据,一些传统的基于关系型数据库的存储和分析难以满足时,且关系型数据库巨大成本压力也是很多企业考虑的问题,而Hadoop给人们提供了解决大数据问题的技术手段。

大数据时代需要Hadoop,那么Hadoop的核心竞争力在哪呢?

5.1 降低大数据成本

Hadoop使企业可以高效的管理数据,以降低数据成本,其中包含业务成本、硬件成本、人工成本、存储成本等。通过易用性、权威性、时效性等特性,Hadoop还可以帮助用户增加数据价值。目前Hadoop社区的支持,以及各大Hadoop厂商的支持,使得Hadoop从一个单独的开源软件逐步演变成一个具有一定规模的生态系统,这些厂商包含Cloudera、MapR、Hortonworks等,他们在这一生态系统中扮演着不同的角色,例如有系统厂商、监控服务商、数据分析商等。

而使用者可以从这些厂商中提供的系统来简化Hadoop的学习成本,快速构建符合自身要求的大数据平台,同时合理利用厂商提供的附属组件来开发出高效、易用的的大数据应用。

5.2 成熟的Hadoop生态圈

Hadoop不是一个“孤岛”系统,它拥有成熟的Hadoop生态圈。

利用Hadoop生态圈设计满足自身需求的方案,需要考虑一些关键要素:

  1. 从需求的最终结果开始分析,而不是从可用的工具开始。例如,可用性、一致性等;
  2. 对数据处理时效性的评估,例如离线任务(MapReduce、Hive)、实时任务(Flink、Spark Streaming);
  3. 尽可能使用成熟的方案。

1.案例一:获取最后一小时的热门链接

将热门链接集中收集,使用Flume将链接发送到Kafka,然后使用Flink或者Spark Streaming计算引擎在1小时的窗口内分析数据,最后将计算后的结果写入到HBase进行存储。

2.案例二:为用户推荐电影

这是一个实时场景,用户喜欢电影,那么用户应立即看到相关电影。

解决思路:每次用户给出评级时,计算建议都是包含权重的,因此我们应该定期根据现有用户行为计算建议。根据对用户行为的理解,可以为给定用户预测所有电影的推荐,然后对其进行排序,并过滤用户已经开过的内容。

组件选取:数据库可以使用NoSQL数据库,例如HBase。来存储用户评级。计算引擎方面可以选择Flink或者Spark ML通过Oozie定时调度来重新计算用户电影推荐。然后,使用Flume和Spark Streaming用于流式传输和处理实时用户行为。

工作流程:Web服务器将用户评级发送给Flume,后者将其传递给Spark Streaming,然后将结果保存到HBase中。接着,使用Oozie定时调度执行Spark ML应用来重新计算电影推荐并将结果保存到HBase中。

6.是否一定要选择Hadoop?

与传统数据库系统相比较,开源的Hadoop有自己的优势。尤其是Hadoop既能处理关系型数据库中的结构化数据,也能处理视频、音频、图片等非结构化数据。并且Hadoop还能够根据数据的规模和问题的复杂度轻松的扩展。那是不是一定要用Hadoop?

每个企业都有自己的特殊需求,都有自己的技能栈,如果已经购买了成熟的数据库产品,没有必要舍弃这些产品,要确保对Hadoop足够的了解,不要盲目的“跟风”。

然而,Hadoop是解决大数据的一种技术手段,这个是一个趋势,例如Hadoop与AI、IoT等领域的结合使用。了解和掌握Hadoop是有所必要的,可以从一些小的项目尝试积累更多经验。

7.结束语

这篇博客就和大家分享到这里,如果大家在研究学习的过程当中有什么问题,可以加群进行讨论或发送邮件给我,我会尽我所能为您解答,与君共勉!

另外,博主出书了《Kafka并不难学》和《Hadoop大数据挖掘从入门到进阶实战》,喜欢的朋友或同学, 可以在公告栏那里点击购买链接购买博主的书进行学习,在此感谢大家的支持。关注下面公众号,根据提示,可免费获取书籍的教学视频。

万亿数据下Hadoop的核心竞争力的更多相关文章

  1. 大数据下的数据分析平台架构zz

    转自http://www.cnblogs.com/end/archive/2012/02/05/2339152.html 随着互联网.移动互联网和物联网的发展,谁也无法否认,我们已经切实地迎来了一个海 ...

  2. 软件架构设计学习总结(4):大数据架构hadoop

    摘要:Admaster数据挖掘总监 随着互联网.移动互联网和物联网的发展,谁也无法否认,我们已经切实地迎来了一个海量数据的时代,数据调查公司IDC预计2011年的数据总量将达到1.8万亿GB,对这些海 ...

  3. [置顶] 大数据架构hadoop

    摘要:Admaster数据挖掘总监 随着互联网.移动互联网和物联网的发展,谁也无法否认,我们已经切实地迎来了一个海量数据的时代,数据调查公司IDC预计2011年的数据总量将达到1.8万亿GB,对这些海 ...

  4. 看好腾讯,鄙视百度(腾讯的核心竞争力,不是超过10亿的QQ的注册用户,也不是某一项产品、技术方面优势,而是“耐心”:懂得在合适的时间推出合适的产品。”)

    百度,自始至终只是一个低劣的模仿者,且一切向前看,完全违背了一个搜索引擎所应该遵循的基本原则.谁给的钱多就能搜着谁,这跟贩毒有什么区别? 腾讯也在模仿别人,但是,它是模仿然后超越.在中国互联网发展历史 ...

  5. 市值3万亿的facebook再出丑闻,你的数据,到底应该归谁?

    最近一则<Facebook隐私泄露事件继续发酵,黑客明码标价出售聊天信息>的新闻被爆出,一个用户的信息被标价10美分.让人不禁感慨,3万亿市值的facebook,用户数据竟然如此便宜. 在 ...

  6. 【DataMagic】如何在万亿级别规模的数据量上使用Spark

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文首发在云+社区,未经许可,不得转载. 作者:张国鹏 | 腾讯 运营开发工程师 一.前言 Spark作为大数据计算引擎,凭借其快速.稳定. ...

  7. 如何在万亿级别规模的数据量上使用Spark

    一.前言 Spark作为大数据计算引擎,凭借其快速.稳定.简易等特点,快速的占领了大数据计算的领域.本文主要为作者在搭建使用计算平台的过程中,对于Spark的理解,希望能给读者一些学习的思路.文章内容 ...

  8. 复杂业务下向Mysql导入30万条数据代码优化的踩坑记录

    从毕业到现在第一次接触到超过30万条数据导入MySQL的场景(有点low),就是在顺丰公司接入我司EMM产品时需要将AD中的员工数据导入MySQL中,因此楼主负责的模块connector就派上了用场. ...

  9. 杂文笔记《Redis在万亿级日访问量下的中断优化》

    杂文笔记<Redis在万亿级日访问量下的中断优化> Redis在万亿级日访问量下的中断优化 https://mp.weixin.qq.com/s?__biz=MjM5ODI5Njc2MA= ...

随机推荐

  1. 如何判断服务器之间的服务是否可用?ping 还是 telnet?

    1. 背景 机器A需要调用机器B的服务,为此要保证服务的可用性,我们有时候用ping,有时候用telent来验证机器A和B的连通性,但有时候会出现这种情况,A可以ping通B,但A调用B的服务会一直报 ...

  2. C# NPOI Excel

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threa ...

  3. javaweb里html的一些基本代码意义(学)

    <html> <head> <title>body.text属性示例</title> </head> <body text=" ...

  4. Linux文件共享服务 FTP,NFS 和 Samba

    Linux 系统中,存储设主要有下面几种: DAS DAS 指 Direct Attached Storage,即直连附加存储,这种设备直接连接到计算机主板总线上,计算机将其识别为一个块设备,例如常见 ...

  5. UILabel的各种属性和方法

    转自:http://liulu200888an.blog.163.com/blog/static/3498972320121214208542/ UILabel  *label1 = [[UILabe ...

  6. Innodb Change Buffer

    Change Buffer属于Innodb内存中的一块结构,它主要用来缓存对二级索引数据的修改(insert, update, delete)操作当二级索引不在Buffer pool中的时候,这些写操 ...

  7. Django 练习班级管理系统二 -- 添加班级数据

    在上一篇中(Django 练习班级管理系统一 https://www.cnblogs.com/klvchen/p/11078174.html),使用的是莫泰对话框的方式提交数据,适用于数据量少的操作. ...

  8. Django框架(十八)—— drf:序列化组件(serializer)

    序列化组件 # 模型层 from django.db import models class Book(models.Model): nid = models.AutoField(primary_ke ...

  9. centos7 apache 配置ssl

    因为小程序后台服务器需要是https的,所以这两天赶紧百度了一波什么是https以及怎么将服务器升级为https.虽然网上教程很多但因具体环境可能有差异导致一路遇坑,摸爬滚打了两天终于弄好了.遂记下一 ...

  10. PostgreSQL 插入行、查表、导出

    1.连接数据库 使用cmd选择安装路径下的psql.exe     登录用户名为postgres   输入密码进行登录. D:\PostgreSQL\9.6\bin\psql.exe -U postg ...