1.大数据基本概念
大数据:短时间快速产生大量多种多样的有价值的信息
当前大数据的几个热门技术:HDFS、MapReduce、HBase是在谷歌三大论文的基础上产生的。
GFS------------HDFS分布式文件系统 MapReduce---------MapReduce分布式的处理 BigData-------HBase分布式,面向列的数据库
大数据目前有两大生态圈:Hadoop和Spark
Hadoop:HDFS、yarn(资源和任务调度)、MapReduce(批处理);
Spark:spark core、sparkSQL(可以使用sql处理)、sparkStreaming(流式处理)、mllib(机器学习库)、graphx(spark停止维护);
以上的东西无法单独完成需求,还需要和kafka(高吞吐量的分布式发布订阅消息系统)、zookeeper(协调服务)、flume(日志收集系统)、hive(数据仓库)等技术相互配合。
2.HDFS内部机制
HDFS主从架构: 读/存文件----->HDFS的读写机制,备份--->解决数据安全问题
班长------主节点(Namenode)
成员------从节点(Datanode)
秘书-----client
HDFS块(block)的机制:
①HDFS以块(block)来将大文件进行存储,hadoop1.X中,一个文件块的默认大小为64M;hadoop2.X中,一个文件块的默认大小为128M。
②文件现行切割成块(block),偏移量offset(byte)--->也是坐标,相当于数组里面的下标;
③block分散存储在集群节点中(保障数据安全性);
④单一文件block大小一致(block块的大小是最开始就设置好的,一个文件被分成的每个块的大小都是一样的),文件与文件可以不一致;
⑤block可以设置副本数,副本分散在不同节点中,副本数不要超过节点数量(副本机制也保障了数据安全,如果副本数超过节点数,该节点崩掉的时候,不论该节点有几个副本,都没有任何作用);
⑥文件上传可以设置block大小和副本数;
⑦已上传的文件block副本数可以调整,大小不变;
⑧只支持一次写入多次读取,同一时刻只有一个写入者;
主从节点的职责:
Namenode(老板):1.掌控全局,管理从节点的信息,管理元数据------->元数据(描述数据的数据)、源数据(真正的数据)
2.接受秘书的请求,读写
3.与从节点之间进行相应的通信
Datanode(员工):1.干活的------>存储数据
2.汇报自己的情况
3.接受秘书的安排
读写的具体机制:
写操作:
1.有一个大文件
2.client会将大文件进行切块,大文件的大小/128M=block块数
3.向主节点汇报:块数、文件大小、文件权限、文件属主、文件的上传时间
4.client切下一块128M
5.client会向主节点去申请资源
6.主节点会返回一批负载不高的从节点给client
7.client会向从节点发送block并且做好备份
8.从节点存放block块之后会向主节点汇报情况
读请求:
1.client会向主节点发送一个请求,主节点接收到请求之后,会向client发送一些节点信息
2.client获取到节点信息之后去从节点上拿取数据-----遵循就近原则
备份机制:
1.集群内提交------->在提交的节点上放置block
集群外提交------->选择一个负载不高的节点进行存放
2.放置在与第一个备份不同机架的任意节点上(数据安全策略)
3.放置在第二个机架的不同节点上
pipeline管道:
1.主节点返回给client一些从节点的信息
2.client会和这些从节点形成一个管道。并且将block切割成一个个ackPackage(64K,相比block块,更易于存储)
3.从节点会从管道拿取相应的数据进行存储
4.当存储完成后,从节点会向主节点进行汇报