讲述HDFS上传文件和读文件的流程
HDFS 上传流程
过程解析:详解
这里描述的 是一个256M的文件上传过程
① 由客户端 向 NameNode节点节点 发出请求
②NameNode 向Client返回可以可以存数据的 DataNode 这里遵循 机架感应 原则
③客户端 首先 根据返回的信息 先将 文件分块(Hadoop2.X版本 每一个block为 128M 而之前的版本为 64M)
④然后通过那么Node返回的DataNode信息 直接发送给DataNode 并且是 流式写入 同时 会复制到其他两台机器
⑤dataNode 向 Client通信 表示已经传完 数据块 同时向NameNode报告
⑥依照上面(④到⑤)的原理将 所有的数据块都上传结束 向 NameNode 报告 表明 已经传完所有的数据块
HDFS在上传文件的时候,如果其中一个块突然损坏了怎么办 其中一个块坏了,只要有其它块存在,会自动检测还原。
NameNode的作用
namenode总体来说是管理和记录恢复功能。
比如管理datanode,保持心跳,如果超时则排除。
对于上传文件都有镜像images和edits,这些可以用来恢复
NameNode在启动的时候会做哪些操作
NameNode启动的时候,会加载fsimage,NameNode启动过程fsimage加载过程
Fsimage加载过程完成的操作主要是为了:
1. 从fsimage中读取该HDFS中保存的每一个目录和每一个文件
2. 初始化每个目录和文件的元数据信息
3. 根据目录和文件的路径,构造出整个namespace在内存中的镜像
4. 如果是文件,则读取出该文件包含的所有blockid,并插入到BlocksMap中。
整个加载流程如下图所示:
如上图所示,namenode在加载fsimage过程其实非常简单,就是从fsimage中不停的顺序读取文件和目录的元数据信息,并在内存中构建整个namespace,同时将每个文件对应的blockid保存入BlocksMap中,此时BlocksMap中每个block对应的datanodes列表暂时为空。当fsimage加载完毕后,整个HDFS的目录结构在内存中就已经初始化完毕,所缺的就是每个文件对应的block对应的datanode列表信息。这些信息需要从datanode的blockReport中获取,所以加载fsimage完毕后,namenode进程进入rpc等待状态,等待所有的datanodes发送blockReports。
NameNode的HA NameNode的HA一个备用,一个工作,且一个失败后,另一个被激活。他们通过journal node来实现共享数据
NameNode和DataNode之间有哪些操作
这个问题有些歧义。操作具体可以查看hadoop命令,应该超不出命令汇总
Hadoop Shell命令字典(可收藏)
?mod=viewthread&tid=6983
hadoop高级命令详解
?mod=viewthread&tid=14829
Hadoop的作业提交流程
Hadoop2.x Yarn作业提交(客户端)
?mod=viewthread&tid=9498
Hadoop2.x Yarn作业提交(服务端)
?mod=viewthread&tid=9496
更多:
hadoop作业提交脚本分析(1)
?mod=viewthread&tid=6954
hadoop作业提交脚本分析(2)
?mod=viewthread&tid=6956
Hadoop怎么分片
如何让hadoop按文件分片
?mod=viewthread&tid=14549
Hadoop分块与分片
如何减少Hadoop Map端到Reduce端的数据传输量 减少传输量,可以让map处理完,让同台的reduce直接处理,理想情况下,没有数据传输
Hadoop的Shuffle
彻底了解mapreduce核心Shuffle--解惑各种mapreduce问题
?mod=viewthread&tid=7078
hadoop代码笔记 Mapreduce shuffle过程之Map输出过程((1)
?mod=viewthread&tid=10335
HMaster的作用
hmaster的作用
为region server分配region.
负责region server的负载均衡。
发现失效的region server并重新分配其上的region.
Gfs上的垃圾文件回收。
处理schema更新请求。
更多
region server and hmaster server
HBase的操作数据的步骤
Hbase写数据,存数据,读数据的详细过程
?mod=viewthread&tid=10886‘
Innodb的二进制文件和Redo日志的区别
1 二进制日志记录所有引擎的日志,而重做日志只记录InnoDB;
2 二进制日志记录事务的具体操作内容,而后者记录每个页更改的物理情况;
3 前者用于point-in-time恢复,后者用于crash recovery;如果mysql发生介质损坏,则需要从备份中恢复然后应用binary log执行point-in-time recovery
Mr是文件方式的分布式计算框架,是将中间结果和最终结果记录在文件中,map和reduce的数据分发也是在文件中。
spark是内存迭代式的计算框架,计算的中间结果可以缓存内存,也可以缓存硬盘,但是不是每一步计算都需要缓存的。
Spark应用转换流程1、spark应用提交后,经历了一系列的转换,最后成为task在每个节点上执行
2、RDD的Action算子触发Job的提交,生成RDD DAG
3、由DAGScheduler将RDD DAG转化为Stage DAG,每个Stage中产生相应的Task集合
4、TaskScheduler将任务分发到Executor执行
5、每个任务对应相应的一个数据块,只用用户定义的函数处理数据块
Spark-rdd是一个数据的分区记录集合………………
Driver运行在Worker上通过org.apache.spark.deploy.Client类执行作业,作业运行命令如下:
作业执行流程描述:
1、客户端提交作业给Master
2、Master让一个Worker启动Driver,即SchedulerBackend。Worker创建一个DriverRunner线程,DriverRunner启动SchedulerBackend进程。
3、另外Master还会让其余Worker启动Exeuctor,即ExecutorBackend。Worker创建一个ExecutorRunner线程,ExecutorRunner会启动ExecutorBackend进程。