c语言sscanf函数的用法是什么
293
2022-11-22
Hadoop之常用概念
心跳机制
作用:告诉主节点自己的存活状态,10分钟30s后被判定为死亡状态。
hadoop dfsadmin -report
datanode每隔3秒向namenode发送一次心跳报告,告诉其自己的存活状态默认情况下心跳间隔的参数由hdfs-default.xml中的下面参数决定:
datanode每隔3秒向namenode发送一次心跳报告,当namenode连续10次没有收到datanode的心跳报告,会觉得datanode可能死了,并没有断定死了,此时namenode向datanode主动发送一次检查,发送一次检查的时间时5分钟,由hdfs.default.xml中的下面属性决定。
如果一次检查没有返回信息,这时候namenode会再进行一次检查,如果还是没有读取不到datanode的信息,此时判定死亡。也就是说namenode最终判断datanode死亡需要103s+25min=630s,也就是说namenode在连续630s中没有得到datanode的信息才认为当前的datanode宕机。
机架感知策略
机架感知: 默认情况下,Hadoop机架感知是没有启用的,需要在NameNode机器的hadoop-site.xml里配置一个选项,例如:
这个配置选项的value指定为一个可执行程序,通常为一个脚本,该脚本接受一个参数,输出一个值。接受的参数通常为datanode机器的ip地址,而输出的值通常为该ip地址对应的datanode所在的rackID,例如”/rack1”。Namenode启动时,会判断该配置选项是否为空,如果非空,则表示已经启用机架感知的配置,此时namenode会根据配置寻找该脚本,并在接收到每一个datanode的heartbeat时,将该datanode的ip地址作为参数传给该脚本运行,并将得到的输出作为该datanode所属的机架,保存到内存的一个map中。
官网脚本地址:机架感知脚本Sample 1: Script with datafileTopology ScriptA sample Bash shell script:
HADOOP_CONF=/etc/hadoop/conf while [ $# -gt 0 ] ; do nodeArg=$1 exec< ${HADOOP_CONF}/topology.data result="" while read line ; do ar=( $line ) if [ "${ar[0]}" = "$nodeArg" ] ; then result="${ar[1]}" fi done shift if [ -z "$result" ] ; then echo -n "/default/rack " else echo -n "$result " fi done
Topology data
hadoopdata1.ec.com /dc1/rack1 hadoopdata1 /dc1/rack1 10.1.1.1 /dc1/rack2
写数据流程
正常写数据流程
客户端负责切片,一个block根据namenode返回的3台机器信息,向这三台机器建立pipeline(数据流管道),逐级返回给客户端,客户端开始以packet(64KB)为单位边上传边切分,先写缓存,缓存接收到一个package后,向下一个节点传递,同时将缓存中的数据写到磁盘中。
异常写数据流程
上传过程中如果有某个节点块上传失败,hdfs会立即进行一次重试,如果还失败,将失败节点从pipeline中删除,并将失败的节点报告给namennode。hdfs最多可以忍受至少只有一个节点上传成功,如果3个节点都失败,这时候会向namenode重新申请,重新构建pipeline。最终保证至少有一份上传成功,剩下的副本在集群上传成功后进行异步复制来的。
写操作相关配置
1)配置参数:dfs.blocksize 参数说明:客户端数据分块的大小默认值:134217728(128M);单位:字节(2)dfs.client-write-packet-size参数说明:客户端写入数据时packet数据包的大小默认值:65536(64K),单位字节(3)dfs.bytes-per-checksum参数说明:chunk(写入数据时最小的一个单位),数据校验的粒度默认值:512字节注:事实上一个chunk还包含4B的校验值,因而chunk写入packet时是516B;数据与检验值的比值为128:1,所以对于一个128M的block会有一个1M的校验文件与之对应;
4. 降副本后删除冗余数据时间
block的上报间隔默认是6小时。
hadoop fsck filepath -files -blocks -racks #查看副本和block块信息
Datanode会定期将当前该结点上所有的BLOCK信息报告给Namenode,参数dfs.blockreport.intervalMsec就是控制这个报告间隔的参数。
hdfs-site.xml文件中有一个参数:
注:hadoop版本为hadoop-3.1.3
5. 元数据合并的过程(checkpoint)
在分布式或者伪分布集群中,每隔一段时间,会由 secondary namenode 将 namenode 上积累的所有 edits 和一个最新的 fsimage 下载到本地,并加载到内存进行 merge(这个过程称为 checkpoint)。①SecondaryNameNode首先会询问NameNode是否需要CheckPoint(触发CheckPoint需要满足两个条件中的任意一个,定时时间到和Edits中数据写满了)。直接带回NameNode是否检查结果。②SecondaryNameNode执行CheckPoint操作,首先会让NameNode滚动Edits并生成一个空的edits.inprogress,滚动Edits的目的是给Edits打个标记,以后所有新的操作都写入edits.inprogress,其他未合并的Edits和Fsimage会拷贝到SecondaryNameNode的本地。③然后将拷贝的Edits和Fsimage加载到内存中进行合并,生成fsimage.chkpoint,然后将fsimage.chkpoint拷贝给NameNode,重命名为Fsimage后替换掉原来的Fsimage。④NameNode在启动时就只需要加载之前未合并的Edits和Fsimage即可,因为合并过的Edits中的元数据信息已经被记录在Fsimage中。
重试次数
最大重试次数
dfs.namenode.checkpoint.max-retries=3
两个触发条件
满足其中一个触发条件,就开始进行chekpoint。
```
参考链接: http://blog.sina.com.cn/s/blog_13122c2790101ed52.html https://blog.csdn.net/qq_34516081/article/details/81353469 https://cnblogs.com/ggjucheng/archive/2013/01/03/2843015.html https://blog.csdn.net/weixin_30278311/article/details/95780782
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~