当前课程知识点:高级大数据系统 > NoSQL > Master Startup > Video
我们刚刚介绍了这个big table
它的一个架构的一个情况
那我们说它是一个和GFS mapreduce
非常类似的一个结构
它有一个中心的master server
管理底下一堆的这个tablet server
然后client会需要从
master server得到一系列的
这种元数据
然后具体的数据的这个传输
和操作会有这个tablet server
和client单独的来完成
那么这样的一个结构
实际上它有它的好处
比如说它的这个性能会比较的高
因为可能client不需要通过
一个bottleneck来进行操作的
这样一个执行
同时它可以利用到底层的
这种分布式文件系统
和底层的mapreduce
进行数据处理
那么它性能上也会有
一定的这个保证
但它的缺点
它会有这个单点的失败对吧
master server是一个整个系统
这样一个单点的失败
那么这种系统的取舍实际上
是这个工业界
在经过一定的探索之后
实际上它们决定使用了
这样的一个结构
当然更好的结构
比如说我们对master
进行一定的这种备份
进行一定的分布式
这都是今天工业界
在探讨的这样一个课题
那么下面我们来介绍的就是说
我们有了这样一个架构
整个这个big table
它是如何工作起来的
以及我们对这个big table
它的一些看法和建议是什么样子
那我们来看big table
是如何运行的
big table它首先启动的是
master server
那么和这个GFS mapreduce
是一致的
master server通过chubby
我们刚刚说chubby维护了整个
big table它的这个名字空间
以及一些这个元数据信息
那么通过chubby它获得了这个
master的一个权限
然后master server
实际上它会去在chubby里面去找
目前big table能够使用的这些
tablet的server
然后他会和这个tablet server进行通讯
然后知道这些tablet server它的一个情况
比如说是否真的在工作
这些tablet server上面
有哪一些这个数据
这个master server会从
刚刚我们说的这种3层结构里面
得到当前系统
它的这些tablet 的一些信息
包含tablet
它的这种树形的结构
以及各个tablet 它对应的
这个tablet server
这是master server它启动之后
对元数据的一个读取
一个load
它的一个情况
master server还会
做一些什么事呢
它会去做这个tablet server的这个分配
也就是说它会决定哪一些
tablet被哪一些这个
tablet server去服务
master server会去scan
就是会去扫描
整个元数据信息里面
哪一些表格没有这个指定tablet server
那这种表格我们把它叫做
这种unassigned table
那么当一个表格没有被指定给
tablet server服务的时候
master就需要去安排
它的这个服务
那么master服务这个过程
实际上就是说它会去找着这样的
一些tablet server
这些tablet server
并不是特别的繁忙
当前的这个运行状态是正常的
会从里面挑选
tablet server
来服务这个tablet
那么tablet的这种server的服务
就会保证tablet
实际上在系统中
它是持久化的
那么持久化到了
分布式文件系统里面
同时它也具有了这种
失败的这种可控
比如说他有3个物理的备份
在3个不同的这个server上
对于这个tablet server
另外一个方面
就是说当我们要对数据
进行一个修改
不只是读的时候
实际上这个过程
我们刚刚也提到过
我们会将这个过程序列化log化
也就是说我们会把这些记录
首先记下来
比如说对某一个tablet
需要做什么样的修改
需要做什么样的调整
那么这个记录会被cache到
一个叫做memtable的
这个结构里面
那么这个memtable里面就会
记录一系列这样的这种commits
一系列这样的用户
对修改的一个提交
形成一个日志
那这个日志会被big table
在后续的时间里面调动起来
让这个修改真正的发生
当发生的时候可能会涉及到
table的真实的这个修改
或者说tablet的一个拆分
那这是系统周期性
去完成的这样一个事情
那么这张图
和我们刚刚的系统架构
实际上是能够对应的
那边有这个big table
它的这些使用的进程
或者是client
那这边是master server
那我们来看它这些模块
分别负责的一些任务是什么
那我们来看big table
这个master
实际上它主要是对元数据
进行一个读取保存
以及对元数据进行一个
这种真实的一个操作
那同时他还要去做一些策略的管理
比如说怎么样维护各个tablet server的load balance
而tablet server它最本质的任务
就是去执行具体的这种查询
可能会做一些代码的这种部署
然后它会去服务数据
当然它是通过GFS模块
那直接部署中
它们其实上是一套
一套这个统一的一个集群
那client是一个
比较聪明的client
它需要和master去协调
对元数据进行一个查询和调整
那么它需要对被big table
进行数据的读和数据的写
那么它还需要和这个chubby
进行一个交互
然后拿到整个系统中一些
关键的这种名字空间的一些数据
那么依然是一个smart client
我们认为
那么有了这样一个
工作的流程之后
master server启动起来
然后找着tablet server启动起来
然后client会去和各个模块
进行沟通
达到数据的这种读和写
那我们来看在big table里面
他们给到的这些例子
这些例程是一个什么样的情况
那么这是对表格进行打开
然后进行一个删除操作的
一个例子
那我们来看它的一个逻辑
是一个什么样的
首先我们把一个表格打开
那么表格的名字空间
这时候会和master,会和chubby
进行一定的这个沟通
然后我们通过这个row
把一个row给提取出来
那么row可以指定到
某一个具体的这个column上面
然后指定到这个column上面之后
我们实际上就对数据
进行了一个定位
在row column的这样一个层面上
进行的一个定位
然后我们可以执行一个操作
叫做得delete
那么这个操作可以实施到
整个系统里面去
那么有了这样一个操作之后
实际上big table已经帮我们
把这样的一个操作
记录到了memtable里面
那么在随后的
这个系统的运行过程中
会帮我们把这个操作
实施到big table里面
那么我们也可以看到
我们在这个big table里面
进行一个数据的这种查询的
一个操作
它的整个过程也很类似
那么我们可以指定
我们要fetch的这个column
它的一个family是什么
那么我们可以让它返回
所有的这个version
也就是说所有time stamp
对应的这些数据
那么我们使用了一个for循环
来对我们需要的这个
一些这个关键词
进行一个检索
那么检索之后
把它打印出来
那我们来看这个检索的过程
我们能够对哪一些数据
进行一个提取
我们可以提取到
rwo的这个名字
column的名字
以及它的这个timestamp里面
具体的数据
也就是row column timestamp
对应的这个数据
所以大家可以发现big table
实际上提供了非常高层
也非常类似sql的
这样一些这种操作
当然它没有特别复杂的这种查询
但是基于big table的这个思想
今天的这个nosql系统
已经可以提供非常复杂的
以及非常类似于关系数据库的
这种数据的查询
那么基于这样的一些原始的接口
那么我们来看
从Google从一个大数据的这种企业
我们来看它的这样一个发展
从这个GFS mapreduce到big table
它的一些这种宏观的这种角度
会有一些什么样的启发
首先这个Google
它的这个老的三驾马车
这个big table
是最后产生出来的
那么最开始是这个
分布式文件系统可以用来存数据
可以不用再担心数据变得有多少
那么只要我有服务器
我就可以扩展
整个系统的这样一个容量
到后面我们可以去运行
一些这种分布式文件处理的
这样一个程序mapreduce
我们可以去执行一系列操作
然后利用到很多的这个服务器
那么我们又想把这种执行
进一步变的简单化
从操作层面简单化
而从效果的层面
我们需要它尽可能执行
比较复杂的语句
我们产生了big table
那么把这3个东西给连到了一块
那big table实际上
整合了GFS和mapreduce的
这个能力
他通过GFS存储数据
通过mapreduce去执行操作
把他们俩做了一个这个协同
就用到一种数据库的
这样一个这个执行的一个模式
那么他共通的一些特性
我们刚刚已经多多少少提到
首先他们都是分布式的这个系统
能够在大量的服务器上
对数据进行存储存取和操作
那么它们都基于
这样一个简单的结构
有中心服务器和若干的
这种执行的这样一个服务器
数据承载的服务器
那么他们都依赖这个
比较聪明的一个客户端
客户端需要做很多的事情
需要去维护很多的状态
那么对业务的这种要求
是比较高的
就是说这几套系统
实际上他们的设计
都是和业务关联起来
最终他们要求业务在用
他们的这些系统的时候
也能够变得比较聪明
能够执行这些具体的
这种流程的一个控制
那么这是我们对3个系统
他们的一个关联他们的关系
进行一个分析
他们的这个关系
GFS这个mapreduce
支撑了big table
他们共享了相同的这个架构
他们的这种不太一样的地方
GFS承载数据
mapreduce执行操作
big table给上层提供
使用数据简单的这样一个接口
-What is big data and what is big data system?
--Video
-Problems in big data systems?
--Video
-Overview of the course
--Video
-Principles of big data system design
--Video
-Manipulating Data on Linux
--Video
--Video
--Video
-Basics of Linux Data Processing--Manipulating Data
-Running Commands on a Single Machine
--Video
-Running Commands on a Single Machine--作业
-Using a Linux Cluster
--Video
-Using a Linux Cluster--作业
-Storage for Big Data Computing: Distributed file system
--Video
-Storage for Big Data Computing: Distributed file system--作业
-File system and GFS
--Video
-File system and GFS--作业
-Understanding HDFS using Legos
--Video
-Understanding HDFS using Legos--作业
-File System Implementation and DFS
--Video
--Video
-File System Implementation and DFS--作业
-What is MapReduce and why
--Video
-What is MapReduce and why
-Learn MapReduce by playing with cards
--Video
-Processing pattern
--Video
-Processing pattern--作业
-Hadoop
--Video
-Hadoop--作业
-Algorithms in MapReduce
--Video
-Algorithms in MapReduce--作业
-Tutorial
--Video
-Background
--Video
-Background--作业
-Spark
--Video
-Spark--作业
-Use Spark for data mining
--Video
-Use Spark for data mining--作业
-Spark data processing
--Video
-Spark data processing--作业
-Experiment in Spark
--Video
-Experiment in Spark--作业
-Introduction to streaming data processing
--Video
-Introduction to streaming data processing--作业
-Storm
--Video
--Video
--Video
-Storm--作业
-Spark streaming
--Video
--Video
-Spark streaming--作业
-NoSQL introduction
--Video
-NoSQL introduction--作业
-Common Advantages
--Video
-Common Advantages--作业
-Bigtable
--Video
-Bigtable--作业
-Master Startup
--Video
-Master Startup--作业
-HBase
--Video
-HBase--作业
-What is GraphDB and Graph data processing
--Video
-What is GraphDB and Graph data processing--作业
-Graph systems
--Video
-Graph systems
-Example of a GraphDB
--Video
-Example of a GraphDB--作业
-Mahout
--Video
-Mahout--作业
-Case Study: Recommendation
--Video
-Case Study: Recommendatio作业
-Recommendation in Mahout
--Video
-Recommendation in Mahout--作业