从0开始学大数据
李智慧
同程艺龙交通首席架构师,前Intel大数据架构师,《大型网站技术架构》作者
立即订阅
14333 人已学习
课程目录
已完结 46 讲
0/4登录后,你可以任选4讲全文学习。
开篇词 (1讲)
开篇词 | 为什么说每个软件工程师都应该懂大数据技术?
免费
预习模块 (3讲)
预习 01 | 大数据技术发展史:大数据的前世今生
预习 02 | 大数据应用发展史:从搜索引擎到人工智能
预习 03 | 大数据应用领域:数据驱动一切
模块一 Hadoop大数据原理与架构 (7讲)
04 | 移动计算比移动数据更划算
05 | 从RAID看垂直伸缩到水平伸缩的演化
06 | 新技术层出不穷,HDFS依然是存储的王者
07 | 为什么说MapReduce既是编程模型又是计算框架?
08 | MapReduce如何让数据完成一次旅行?
09 | 为什么我们管Yarn叫作资源调度框架?
10 | 模块答疑:我们能从Hadoop学到什么?
模块二 大数据生态体系主要产品原理与架构 (7讲)
11 | Hive是如何让MapReduce实现SQL操作的?
12 | 我们并没有觉得MapReduce速度慢,直到Spark出现
13 | 同样的本质,为何Spark可以更高效?
14 | BigTable的开源实现:HBase
15 | 流式计算的代表:Storm、Flink、Spark Streaming
16 | ZooKeeper是如何保证数据一致性的?
17 | 模块答疑:这么多技术,到底都能用在什么场景里?
模块三 大数据开发实践 (8讲)
18 | 如何自己开发一个大数据SQL引擎?
19 | Spark的性能优化案例分析(上)
20 | Spark的性能优化案例分析(下)
21 | 从阿里内部产品看海量数据处理系统的设计(上):Doris的立项
22 | 从阿里内部产品看海量数据处理系统的设计(下):架构与创新
23 | 大数据基准测试可以带来什么好处?
24 | 从大数据性能测试工具Dew看如何快速开发大数据系统
25 | 模块答疑:我能从大厂的大数据开发实践中学到什么?
模块四 大数据平台与系统集成 (6讲)
26 | 互联网产品 + 大数据产品 = 大数据平台
27 | 大数据从哪里来?
28 | 知名大厂如何搭建大数据平台?
29 | 盘点可供中小企业参考的商业大数据平台
30 | 当大数据遇上物联网
31 | 模块答疑:为什么大数据平台至关重要?
模块五 大数据分析与运营 (5讲)
32 | 互联网运营数据指标与可视化监控
33 | 一个电商网站订单下降的数据分析案例
34 | A/B测试与灰度发布必知必会
35 | 如何利用大数据成为“增长黑客”?
36 | 模块答疑:为什么说数据驱动运营?
模块六 大数据算法 (6讲)
37 | 如何对数据进行分类和预测?
38 | 如何发掘数据之间的关系?
39 | 如何预测用户的喜好?
40 | 机器学习的数学原理是什么?
41 | 从感知机到神经网络算法
42 | 模块答疑:软件工程师如何进入人工智能领域?
智慧写给你的寄语 (1讲)
所有的不确定都是机会——智慧写给你的新年寄语
结束语 (2讲)
结束语 | 未来的你,有无限可能
第2季回归丨大数据之后,让我们回归后端
从0开始学大数据
登录|注册

06 | 新技术层出不穷,HDFS依然是存储的王者

李智慧 2018-11-10
我们知道,Google 大数据“三驾马车”的第一驾是 GFS(Google 文件系统),而 Hadoop 的第一个产品是 HDFS,可以说分布式文件存储是分布式计算的基础,也可见分布式文件存储的重要性。如果我们将大数据计算比作烹饪,那么数据就是食材,而 Hadoop 分布式文件系统 HDFS 就是烧菜的那口大锅。
厨师来来往往,食材进进出出,各种菜肴层出不穷,而不变的则是那口大锅。大数据也是如此,这些年来,各种计算框架、各种算法、各种应用场景不断推陈出新,让人眼花缭乱,但是大数据存储的王者依然是 HDFS。
为什么 HDFS 的地位如此稳固呢?在整个大数据体系里面,最宝贵、最难以代替的资产就是数据,大数据所有的一切都要围绕数据展开。HDFS 作为最早的大数据存储系统,存储着宝贵的数据资产,各种新的算法、框架要想得到人们的广泛使用,必须支持 HDFS 才能获取已经存储在里面的数据。所以大数据技术越发展,新技术越多,HDFS 得到的支持越多,我们越离不开 HDFS。HDFS 也许不是最好的大数据存储技术,但依然最重要的大数据存储技术
那我们就从 HDFS 的原理说起,今天我们来聊聊HDFS 是如何实现大数据高速、可靠的存储和访问的
Hadoop 分布式文件系统 HDFS 的设计目标是管理数以千计的服务器、数以万计的磁盘,将这么大规模的服务器计算资源当作一个单一的存储系统进行管理,对应用程序提供数以 PB 计的存储容量,让应用程序像使用普通文件系统一样存储大规模的文件数据。
取消
完成
0/1000字
划线
笔记
复制
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
该试读文章来自付费专栏《从0开始学大数据》,如需阅读全部文章,
请订阅文章所属专栏。
立即订阅
登录 后留言

精选留言(74)

  • 上个纪元的赵天师
    听过本期音频,我想,在现实的条件下,实现这样的设想非常困难,例如:【1】用户空间(尤其是手机,iPad)不能保障高可用的性能,随时被访问被验证;【2】网络条件要求过高,尤其是被需求或者需要均衡时频繁的文件迁移;【3】要验证HDFS所有备份块的可用性,因此个人中端上不能过多不同用户,过碎的数据块;【4】为了保证系统的高效一般一块数据不会过小,要不然会浪费过多的计算资源(进程),如果单块数据在128M左右,自然会受到终端存储规模的制约【5】等等诸多隐患。因此,稳定的分布式端点还是必要的,不然文件将在诸多节点中频繁移动浪费大量的网络资源。【补】过于复杂的架构网络,对验证的响应延时也造成了麻烦。边走边打字暂时先想到这些😬

    作者回复: 很周全

    2018-11-10
    2
    51
  • 方得始终
    最近两大Hadoop发行商Cloudera 和Hortonworksg合并,网上包括极客时间也报道过HDFS跟云端对象存储系统已没有性能和价格上的优势.在我工作实践中也碰见过HDFS上存储的文件丢失,虽然只是一个机架(rack)断电.请问老师对此有何看法?
    2018-11-10
    16
  • 文大头
    1、互联网上用户交分散,需要用CDN的模式,分层分区域部署NameNode,NameNode上数据汇总到上级,上级数据按需分发到下级。同一个区域的用户(DataNode)分配到同一个NameNode
    2、用户DataNode机器可用性极差,按10%算,平均一个数据需要10个备份。不过可以有一定策略改进,比如让用户活跃时间跟用户等级挂钩,等级跟功能挂钩,以鼓励用户增加在线时间;存储数据可以分级别,高级别数据备份更多,可用性安全性速度更高,级别低备份少。
    3、安全性考虑,其他用户存储在NameNode上的数据,不能被宿主机破解查看和修改
    暂时想了这些,感觉再想下去要变成百度网盘或者迅雷了

    作者回复: 想的很周全

    2018-11-12
    14
  • 星辰
    老师、我想提一个问题: 主NameNode 向 Sared Edits 写数据的过程中、主Namenade 没洗完的数据是不是会丢失? 那这样 从NameNode被选举为主NameNode 后,是不是会有一部分数据找不见存在哪个DataNode上了? 大家都可以回答哈 另外 一个数据块 在什么情况下、不是一个分区?
    2018-11-26
    8
  • 落叶飞逝的恋
    关于思考题的想法:首先这个就是各大厂商的提出的云服务的概念。而对于手机、ipad的这些设备作为分布式容器的一部分,是不可取的。首先不能不确保手机的网速的可用性,而且三大运营商都有流量这个概念。第二,手机无法实时的给NameNode进行发送心跳,因为用户可以主动关闭网络,或者用户在无网区域。
    2018-11-12
    7
  • 鸠摩智
    如果在hdfs上存储了大量的小文件,每个文件都不到一个块(128M)大小。而每个文件确实是单独的,比如一张张图片,不能把它们合并为一个大文件,这样即使一个文件namenode只存储几字节的元数据,是不是也有可能超出namenode单台机器限制了呢?
    2018-11-12
    4
  • Jack Zhu
    “如果 DataNode 监测到本机的某块磁盘损坏,就将该块磁盘上存储的所有 BlockID 报告给NameNode。”
    有个疑问,望解答:磁盘损坏,怎么获得BlockID,BlockID存在哪?
    2018-11-24
    1
    3
  • blacksmith.ink
    讲技术不讲技术脉络的也都是流氓啊。那些去中心化存储的区块链项目,就没谁写出去中心存储应是借鉴或发展于hdfs等分布式存储方案。raid到hdfs立马好理解多了。我是看过ipfs,storj,sia等几个去中心化的存储方案。通过看今天的内容,我突然感觉开窍了,他们整得太复杂了,基于hdfs加上存储时空证明就能实现去中心化存储,实现高可用的技术细节考虑的当然不同了,而存储时空权益就把终端的高可用工作分散到具体用户了。当然,namenode是中心化部署还是代理节点部署还是要考虑一下。另,通过用户贡献的存储时长和空间换来的受益,这对用户的约束可能会随时间变化而减少,进而存储的可用性是不稳定的,但这里我想了两个方案:1,用户贡献出来的资源是为了储值的,获得权益是要零存整取,加大惩罚成本(这个估计他们实际做的会想到,我当时看时反正没看到);2,整个分布式系统加一套蓝光备份系统,这种低成本数据存储方案是对要求高可用数据的备选项。

    作者回复: 深刻👍🏻

    2018-11-21
    3
  • 朱国伟
    关于DataNode 故障容错感觉处理起来好复杂啊 假设numReplicas=2 由于机器故障导致DataNode 1宕机 此时为了保证numReplicas=2会复制数据 像下面的情况怎么处理呢
    - 等全部复制完了 DataNode1重启了 那此时numReplicas=3 这种情况会处理吗?
    - 或者复制到一半(即有些Block还没来得及复制) DataNode1重启了 这种情况又怎么办
    - 或者集群勉强够用 实在没有多余的机器来复制DataNode1对应的数据了 又该如何

    并且要是掉电或是网络异常 可能不是一个DataNode宕机 可能是怎个机架整个机房的DataNode的都宕机了

    作者回复: DataNode即使重启也认为其上的数据已经丢失,不会再使用。

    2018-11-10
    3
  • 一步
    这个思考题的实现思路是和IPFS的实现思路应该一样的

    作者回复: 是的

    2018-11-10
    2
  • 姜文
    首先要部署个name node存储元数据,记录用户数据存储的位置,为保证name node的高可用,必须做备份,通过zookeeper选举主 name node,data node就是全世界的移动设备,用户的数据要做备份,至少三份,用户的app必须和name node的主备服务器做心跳,用于移动设备故障时能主动上报或者name node能及时发现保证数据可用。用户如果要存储数据必须通知name node做好元数据记录及datanode的数据备份。第一次回答,请老师指教。
    2018-11-10
    2
  • 往事随风,顺其自然
    可以先通过定位寻找离自己近的人的手机存储容量,如果不够就扩大搜索范围直到可以满足自己需求,然后给对应这些设备设置一个哈稀函数,怎么来存储对应分片数据,根据不同分钱到的对应设备上付钱,并且设置一个校验的设备,定时的去检测设备,哪些可用,哪些不可用,然后进行数据转移备份
    2018-11-10
    2
  • 掌心童话
    这讲的诸多点让我想到了区块链,脑裂,不就是共识算法问题引起的经典拜占庭问题( •̥́ ˍ •̀ू )。这把客户端当数据存储节点也是各种币做交易记录数据库的玩儿法
    2019-04-22
    1
  • 张晓生
    如果在一台nameNode服务器元数据有修改但是还没来得及热备到从nameNode服务器,这个时候刚好主nameNode服务器挂了,zookeeper选举出新的主服务器(之前的从节点),就会造成当前的主nameNode节点数据不正确。请问这种问题怎么解决呢?

    作者回复: NameNode在本地有操作日志,可以利用这个日志进行恢复操作,但是前提是原来的主NameNode的硬盘没坏,还有就是恢复需要时间。

    2019-01-16
    1
  • Sam.张朝
    从第一篇看到第六篇,感觉脑袋有点装不下了。
    2018-12-17
    1
  • dingwood
    Shared edits是啥。。网上搜半天没找到,求指点
    2018-12-15
    1
  • wmg
    类似于hdfs的机制,只不过将用户设备作为datanode,namenode是中心化的(否则和区块链就比较类似)。有几个问题需要考虑:1.用户设备存储空间有限,所以block的大小不能太大;2.由于block不能太大所以元数据会比较大,对namenode存储空间要求较高;3.由于datanode是不可信的,所以需要对datanode设计身份识别机制,存储的数据也必须是加密,副本数量也要设置的多一些;4.由于所有的datanode都需要和namenode通信,所以datanode的数量会有限制,这样就限制了整个集群的存储空间,可以考虑多集群的方式,用户注册的时候利用负载平衡算法将用户划分到其中一个集群。暂时想到这么多,请老师指教。

    作者回复: 很赞,不过NameNode不应该是存储空间的制约,该怎么办?

    2018-11-12
    1
  • 摘星星种星星
    我直接放弃,不设计。因为可用性无法得到保证。我记得有个贡献CPU时间参与科学计算的,这种特点是要移动数据量小,计算时间长,收到结果后起码要有两份结果一致才会认为可信的。

    这两种共同特点是用户可以随时退出,但用于科学计算的话,大不了下次再找个计算机发个他重新计算,用户退出了就可以不理他;但用来分布式存储数据的话,GG了,你得实时关注用户有没有退出,退出后的用户那部分数据要不要重新弄个备份,要读取数据时候需要同时读取和验证多少份数据才会认为是可信的,如何抵御被攻击等等,太难了,考虑不过来
    2019-11-25
  • 张小喵
    补充一点,西电睿思平台的 也有“冗余备份“的思想,学生使用ut客户端下载了电影、学习资料等文件到本地pc,那么这个pc就是一个DataNode,一个电影肯定会有很多人下载,那么这些所有下载了这个电影的同学的pc中的下载数据就形成了“冗余备份”
    2019-11-21
  • 张小喵
    西电bbs,西电睿思就是使用这个原理,睿思上有庞大的数据,比如上万部电影,电视剧,学习资料,等等,都是分布式存储在睿思用户的本地pc上的,使用的是uTorrrent客户端,每次下载都是从在线的同学的pc上并行下载,下载速度很快,由于校园网内部之间走的流量是不计费的,所以在费用上面没有任何制约,本地存储的数据被他人下载的越多,会赢得更多的金币,使用金币可以去下载资源,以及“炫富”,伸手党如果总是关闭本地共享存储客户端,没有流量,那么他们能下载的资源会越来越有限,最后只能下载免费资源。金币奖励机制保证了平台的良性发展。很nice。 移动端作为共享存储客户端的话,我觉得流量费是个很大的限制,没有人想被在不知情的情况下被消费自己的移动流量,毕竟不是免费的。而且可恶的三大运营商还会限速.....我觉得,如果什么时候本地存储足够多了,流量足够便宜了,网速足够快了,客户端安全做的足够好了 那么这种共享存储的模式才会全面推广。
    2019-11-21
收起评论
74
返回
顶部