课是UC圣地亚哥的大数据专项课,共6个子课程。关于大数据hadoop等东西我大概已经学习了(?)跨越半年多的时间,啃过一本hadoop权威指南,然而一直都没太懂,这一次我决定从课程出发,把这些玩意搞明白!!!
相关书就不都展开写了,参考书如下:
《hadoop实战》 [美]ChuckLam 2011
《hbase实战》 NICK DIMIDUK AMANDEEP KHURANA
《spark高级数据分析》
《hadoop硬实战》
《python+spark 2.0+ hadoop机器学习与大数据实战》 林大贵
《Hadoop数据分析》
《hadoop机器学习》
我也不知道为什么我要搞这么多本书,但愿我能活着看完。
开始:
1.大数据导论
各种概念,第六讲进入hadoop,首先是mapreduce之概念,摘自课程讲义:
Map-Reduce是一种可伸缩的编程模型,它简化了数据的分布式处理。Map-Reduce由三个主要步骤组成:映射、变换和缩减。考虑Map-Reduce工作的一个简单方法是,将其与将一项大型任务“委派”给一组人,然后将每个人的努力结果结合起来,从而产生最终结果。
让我们举个例子来说明这一点。你刚刚在办公室听到这个好消息,要为你所有的同事举办一个聚会!你决定晚餐做意大利面。你的四个朋友,谁喜欢烹饪,也自愿加入你的准备。意大利面的准备工作包括切菜、烹饪和装饰。
让我们以切菜为例,看看它与地图简化任务有何相似之处。在这里,生蔬菜是输入数据的符号,您的朋友相当于计算节点,而最终切碎的蔬菜相当于期望的结果。每个朋友都会分到洋葱、西红柿和辣椒来切和称重。
你也想知道你的厨房里有多少种蔬菜。在计算过程中,您还需要将这些蔬菜切碎。最后,洋葱应该放在一个大碗里,标签上标明它的重量(磅),西红柿放在另一个碗里,等等。
MAP:
他们被要求使用他们的“计算”能力来切菜和测量每种蔬菜的重量。他们需要确保不混合不同类型的蔬菜。因此,每个朋友将生成一个映射<键,值>对,看起来像:
Friend X:
<tomatoes, 5 lbs>
<onions, 10 lbs>
<garlic, 2 lbs>
看起来你正在举行一个盛大的聚会!现在你的朋友们已经切好了蔬菜,并在每个碗上标上蔬菜的重量和种类,我们进入下一个阶段:洗牌。
洗牌:这个阶段也叫分组。在这里你要根据蔬菜的种类来分类。你把厨房的不同区域分配给每种蔬菜,你的朋友们应该把碗分好,这样类似的食物就可以放在一起了:
North End of Kitchen(按照菜的种类分为三部分,其中一个部分):
<tomatoes, 5 lbs>
<tomatoes, 11 lbs>
REDUCE:
在这个阶段,你要求你的每个朋友收集相同类型的物品,把它们放在一个大碗里,并在这个大碗上标记每个碗的重量之和。你的朋友等不及派对开始,马上开始“减少”小碗。最后,你会得到一个漂亮的大碗,上面标有每种蔬菜的总重量。
西红柿变成了这样:
<tomatoes, 16 lbs>
你的朋友(“计算节点”)刚刚执行了一个地图简化任务来帮助你开始烹饪意大利面。因为您在协调整个练习,所以您是这个Map-Reduce任务的“主”节点。你的每一个朋友都在不同的时间扮演过制图者(mappers)、石斑鱼(groupers)和还原者(reducers)的角色。此示例演示了此技术的强大功能。
这个简单而强大的技术可以很容易地扩展,如果你的朋友决定加入你。在未来,我们将继续在不同的开源工具上添加更多的文章,这些工具将帮助您轻松实现Map-Reduce来解决计算问题。
1.6.2
这一节开始安装,let me try for real
首先装VM,然后是 Cloudera VM.
然后导入,就成功了
如此简单
后面两节介绍了HDFS的简单操作并提供了一个wordcount的小例子,妈妈再也不用担心我交作业了
2. 大数据建模与管理系统
简单来说这part讲了不同类型数据的处理和数据库相关。
前四节介绍了对于文本,图片,json,csv等数据类型的简单处理和可视化,讲的不是很详细,若想精通还须自己去研究。关于图模型推荐了一个软件Gephi,亲测有效,就是有点卡…
介绍了DAS,NAS/SAN的概念和区别,参考链接:
https://blog.csdn.net/yinmingxuan/article/details/89011430
2.5 DBMS
数据库管理系统(Database Management Syster,DBMS)
用来管理数据库的计算机系统。
DBMS的分类
主要通过数据的保存格式(数据库的种类)来进行分类,主要有:
1.层次数据库(Hierarchical Database,HDB)
2.关系数据库(Relational Database,RDB) 目前20190304使用最广泛的一种
3.面向对象数据库(Object Oriented Database,OODB)
4.XML数据库(XML Database,XMLDB)
5.键值存储系统(Key-Value Store,KVS)
ACID:事务管理
谈到事务一般都是以下四点:
原子性(Atomicity)
原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。
一致性(Consistency)
事务前后数据的完整性必须保持一致。
隔离性(Isolation)
事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。
持久性(Durability)
持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响
REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
它通常被称为数据结构服务器,因为值(value)可以是 字符串(String), 哈希(Hash), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。
MongoDB 是一个基于分布式文件存储的数据库。由 C++ 语言编写。旨在为 WEB 应用提供可扩展的高性能数据存储解决方案。
MongoDB 是一个介于关系数据库和非关系数据库之间的产品,是非关系数据库当中功能最丰富,最像关系数据库的。
Apache AsterixDB 是开源的大数据管理系统 (BDMS),可以在一个集群中大规模存储,索引,管理和查询语义结构的数据。Hyracks 是 AsterixDB 的底层数据流运行平台。AsterixDB 拥有丰富的数据类型,扩展了 JSON 数据类型,支持立体的和临时的数据。
2.6
最后一节是为在线游戏设计一个大数据管理系统
如果我能做出来再写吧