今天学习大数据,我说一点我个人对于大数据的看法:
正如马云所说,我们还没弄清楚什么是pc互联网 ,移动互联网就来了,当我们还在学习移动互联网的时候 ,这时候大数据时代来了
我觉得这是时代发展和科技进步所带了的必然结果,我们在享受信息大爆炸时代所带来的便利的同时,就会有人思考,如果我掌握了一个
人的某方面的大量样本,是不是能对一个人的某方面行为进行评估,预测 。从而可以进行特定的商业活动呢? 关于,这个想法其实在古
代孙子兵法中有一句知己知彼百战不殆,说的就是一个道理。但是,我们之前所处的时代不允许,甚至pc互联网时代都不具备条件,然而
随着智能手机的蓬勃发展,智能手机成为了每个人的信息接收处理终端,手机是随着人移动,记录人的一举一动的个人计算平台,而且随
着4G时代的到来,人均网络速度的大幅提升(对比于2G,3G时代),这是使得数据的交互速度获得了几何式的飞跃,导致我们的互联网
每天吞吐着海量的数据,于是大数据就这样悄无声息的到来了
我个人认为大数据是: 可以短时间的快速的产生大量的多样化的有价值的信息
Hadoop是一个由Apache基金会所开发的分布式系统基础架构。
用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。
Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,而MapReduce则为海量的数据供了计算。
额 以上是百度的大家看看就好
hadoop 是一个生态圈 其中有许多技术做支撑宝库但不限于 HDFS MapReduce spark hive 等都是为了大数据的海量数据而设计的高速存
储和处理所开发的软件生态系统
底层——存储层,文件系统HDFS
中间层——资源及数据管理层,YARN以及Sentry等
上层——MapReduce、Impala、Spark等计算引擎
顶层——基于MapReduce、Spark等计算引擎的高级封装及工具,如Hive、Pig、Mahout等等
HDFS 使用主从架构
分别由 Namenode(主节点) Datanode(从节点) 和 client
存储文件 和 读取文件 主要运用hdfs的读写机制 还有备份机制
hdfs 主要使用 block机制 对海量数据进行存储
block (快) 就是 将文件分成规定大小的数据块 分别发送给集群的不同节点 进行储存这样大大加快了存储效率
关于block 大小 1.x版本 block快 默认大小 64mb 2.x版本到现在 block 默认128mb
ps:1.block大小可以自己定义 可以自己根据需求自己定义 ,由于可能出现数据正好完全分割的情况 ,所i会多分割一块
2.分散在集群中的block块 通过 偏移量offset 来识别
3.单个文件的block分割的大小必须一致,不同文件的block块可以不一致
4.block大小和副本数(备份数)在文件上传的设置 一旦上传完毕 不可以更改block大小
5.block上传后副本数可以调整 大小不可更改
6.同时只能有一个写入者,可以多人多次读取
1.负责管理Datanode 的信息 管理元数据(用于描述,标识源数据的数据)
2.接受client 的 读写请求
3.与Datanode 通信
1.负责将数据写入服务器中的具体节点
2.与Namenode 汇报自己的状态
3.接受 client 的分配的任务
辅助 Namenode 完成任务
1.一个数据包需要进行储存
2.client 会将数据包 分块
3.client 文件的分割信息 传给namenode 包括(块数,文件的大小,文件的权限,文件属性,文件的上传信息)
4.client 向namenode 申请资源 (Datanode的信息)
5.namenode返回一批负载较低的Datanode的信息
6…client 向Datanode 发送block 并做好备份
7.Datanode储存完毕向namenode汇报
重复4-7纸质文件储存完毕
1.namenode 向client 发送请求
2.client 收到请求 ,向namenode申请节点信息(blockid)
3.namenode返回一批负载较低的Datanode的信息
4.client 收到节点信息(blockid)后去Datanode读取数据
1.集群内提交 即namenode直接发起请求 根据就近原则 再提交的节点 放置副本
2.集群外提交 namenode 通过 client 进行备份 会 通过负载较低的节点放置副本
3.放置于 与前面副本存放的节点不同的节点
4.放置于 与前面副本存放的机架不同的节点
ps:副本数不应超过节点数(在同一个节点放置相同副本,除了浪费储存空间毫无意义)
根据备份机制 个人认为 同一个机架不应该所有节点都有备份