block

hdfs datanode decomission引发的block missing

自古美人都是妖i 提交于 2020-03-06 01:08:58
最近在帮公司下线离线计算集群的机器,逐台decomiss,下到第四台机器时,cdh告警来了,丢失块大于集群的1%,算了一下集群有400多台,下线一台不应该告警,以为下线步骤有问题,点了中止下线,后来看了下其实步骤是没问题的,由于下线的机器配置比较好,所以确实这台机器上存储了集群1%以上的block,于是终止了datanode的decomission,但是集群还是出现了14个 missing block,按照常理,hdfs上的文件丢失副本只要不是所有副本全丢,过段时间hdfs都会把这些副本从其他节点copy一份,但是这些block随着时间的增加永远不会恢复。 确认了下线步骤没有问题以后,选择原来的datanode继续decomission,但是这一步会一直卡住,不会完成,看了下datanode的日志,确实是在移动数据,但是看节点的io很小,完全达不到正常下线节点时的io。于是这个节点先略过,下线其他节点,发现也出现同样情况,看来继续下线是不行了。 看了一下clouddera社区的一个issue,这好像是cdh的一个bug,上面cdh的官方人员说要把datanode删掉再重新加回来就可以下线了。 于是我把datanode停了,通过cdh监控按到节点上的block全部复制完以后,直接把datanode删除掉了, 没有走正常decomission的流程。弄完之后去hdfs的监控看了下

Linux基础—ext4文件系统

浪子不回头ぞ 提交于 2020-03-05 18:45:09
EXT4文件系统 索引(index ),文件系统 : ext3:文件系统最大16TB ext4:文件系统最大16TB XFS:文件系统最大100TB. Inode: 记录文件的属性(文件的元数据metadata),文件的属性,大小,权限,属主,属组,连接数,块数量,块的编号等 一个文件占用一个inode,同时记录此文件数据所在的block numbber inode大小 为 128 bytes ll -i //观察inode信息 df -i //查inode数量 block: 存储文件的实际数据,实际存储文件的内容,若文件较大,会占用多个block,block大小 为默认为4K superblock: 1:block 与 inode 的总量; 2:未使用与已使用的 inode / block 数量; 来源: CSDN 作者: Linux基础 链接: https://blog.csdn.net/weixin_45916564/article/details/104679971

iOS消息机制

落爺英雄遲暮 提交于 2020-03-05 03:24:26
每个应用程序或多或少,都由一些松耦合的对象构成,这些对象彼此之间要想很好的完成任务,就需要进行消息传递。 一下是所有可用的消息传递机制: Core Data managed object context是notification的发送者,而获取这些notification的主体则是接收者。一个滑块(slider)是action消息的发送者,而在代码里面对应着实现这个action的responder就是接收者。对象中的某个属性支持KVO,那么谁修改这个值,谁就是发送者,对应的观察者(observer)则是接收者。 KVO KVO提供了这样一种机制:当对象中的某个属性值发生了改变,可以对这些值的观察者做出通知。KVO的实现包含在Foundation里面,基于Foundation构建的许多Framework对KVO都有所依赖。如果对某个对象中值的改变情况感兴趣,那么可以使用KVO消息传递机制。这里有两个要求,首先,接收者(会接收到值发生改变的消息)必须知道发送者(值将发生改变的那个对象)。另外,接收者同样还需要知道发送者的生命周期,因为在销毁发送者对象之前,需要取消观察者的注册。如果这两个要求都满足了,消息传递过程中可以是1对多(多个观察者可以注册某个对象中的值)。如果计划在Core Data对象上使用KVO,需要知道这跟一般的KVO使用方法有点不同。那就是必须结合Core

try catch finally 执行顺序面试题总结

故事扮演 提交于 2020-03-04 15:47:28
在网上看到一些异常处理的面试题,试着总结一下,先看下面代码,把这个方法在main中进行调用打印返回结果,看看结果输出什么。 public static int testBasic(){ int i = 1; try{ i++; System.out.println("try block, i = "+i); }catch(Exception e){ i ++; System.out.println("catch block i = "+i); }finally{ i = 10; System.out.println("finally block i = "+i); } return i; } 没错,会按照顺序执行,先执行try内代码段,没有异常的话进入finally,最后返回,那么输出如下: try block, i = 2 finally block i = 10 main test i = 10 这个没有问题,如果我们把return语句放入try catch里又会怎么样呢 public static int testBasic(){ int i = 1; try{ i++; System.out.println("try block, i = "+i); return i; }catch(Exception e){ i ++; System.out.println("catch

hadoop实现的思想

橙三吉。 提交于 2020-03-04 10:47:59
1.hdfs是通过分布式集群存储文件,为客户端提供了一个便捷的访问方式,其实就是一个虚拟目录; 2.文件存储到集群中被分割成多个block(一个block默认为128M); 3.文件的block存储在若干个datanode上; 4.hdfs文件系统中的文件与真实的block存在映射关系,由namenode管理; 5.每一个block在集群中的datanode存储会由多个副本,好处就是提高数据的可靠性,还可以提高访问的吞吐量; 来源: oschina 链接: https://my.oschina.net/u/4434424/blog/3187718

block 实现原理详解(一)

穿精又带淫゛_ 提交于 2020-03-02 21:56:36
对于大多数人来讲,block内部到底是怎样实现的呢?我们可以借助clang将其编译成为c++的代码,就可以看出,block到底是什么东西, 先来看这样一个问题, <!-- lang: cpp --> int age = 10; void (^block)() = ^{ NSLog(@"%d",age); }; age = 30; block();//10 以及下面的这一段代码 <!-- lang: cpp --> __block int age = 10; void (^block)() = ^{ NSLog(@"%d",age); }; age = 30; block();//30 你会发现这两个结果是不同的, 第一个输出10,第二个输出的是30 要想知道这里面干了些什么!需要我们将其编译成为C++代码,看下里面到底搞了些什么? 使用终端,转到mian.m文件下,使用如下代码 clang -rewrite-objc main.m 将其编译生成 main.cpp文件 这时候,我们打开mian.cpp便知 在文件的最底下main函数中 <!-- lang: cpp --> int main(int argc, const char * argv[]) { /* @autoreleasepool */ { __AtAutoreleasePool __autoreleasepool; _

Magento调用静态块 static block

余生长醉 提交于 2020-03-02 19:15:52
静态块(static block),仅包含一些静态的html内容,不涉及数据库存取,比如像:一些文字和图片链接,网站页脚部分等。建立static block很简单,Magento后台提供一个功能,可以方便的创建、编辑、管理static block。可以在【管理员后台】》【CMS】》【Static Blocks】菜单找到。 建立了static block后,如何在前端界面显示呢?一是在Magento的layout文件中配置,然后在模板文件.phtml中通过调用 getChildHtml('block_id')输出为html代码。下面借助在Magento中系统内置的一个静态块footer_links来说明。 首先,在cms.xml layout文件中设置静态块: <default> <referencename="footer"> <blocktype="cms/block"name="cms_footer_links"before="footer_links"> <!-- The content of this block is taken from the database by its block_id. You can manage it in admin CMS -> Static Blocks --> <actionmethod="setBlockId"><block_id

[C#]200 行代码使用 C# 实现区块链

孤人 提交于 2020-03-02 18:15:39
文章原文来自: Code your own blockchain in less than 200 lines of Go! ,原始文章是通过 Go 语言来实现自己的区块链的,这里我们参照该文章来使用 C# + Asp.Net Core 实现自己的区块链。在这里我也参考了 这篇译文 。 区块链网络相关原始文章已经更新,请查看 这里 。 1.项目配置 首先新建一个 Asp.Net Core 项目,然后选择 Empty Project(空项目) 类型,建立完成后无需进行任何配置。 2.数据模型 这里我们来创建一个具体的区块数据模型,使用的是 Struct 结构体。 public struct Block { /// <summary> /// 区块位置 /// </summary> public int Index { get; set; } /// <summary> /// 区块生成时间戳 /// </summary> public string TimeStamp { get; set; } /// <summary> /// 心率数值 /// </summary> public int BPM { get; set; } /// <summary> /// 区块 SHA-256 散列值 /// </summary> public string Hash { get; set;

HDFS 小文件的解决思路

笑着哭i 提交于 2020-03-02 18:03:01
我们知道,HDFS 被设计成存储大规模的数据集,我们可以在 HDFS 上存储 TB 甚至 PB 级别的海量数据。而这些数据的元数据(比如文件由哪些块组成、这些块分别存储在哪些节点上)全部都是由 NameNode 节点维护,为了达到高效的访问,NameNode 在启动的时候会将这些元数据全部加载到内存中。而 HDFS 中的每一个文件、目录以及文件块,在 NameNode 内存都会有记录,每一条信息大约占用150字节的内存空间。由此可见,HDFS 上存在大量的小文件( 这里说的小文件是指文件大小要比一个 HDFS 块大小(在 Hadoop1.x 的时候默认块大小64M,可以通过 dfs.blocksize 来设置;但是到了 Hadoop 2.x 的时候默认块大小为128MB了,可以通过 dfs.block.size 设置) 小得多的文件。 ) 至少会产生以下几个负面影响: 大量小文件的存在势必占用大量的 NameNode 内存,从而影响 HDFS 的横向扩展能力。 另一方面,如果我们使用 MapReduce 任务来处理这些小文件,因为每个 Map 会处理一个 HDFS 块;这会导致程序启动大量的 Map 来处理这些小文件,虽然这些小文件总的大小并非很大,却占用了集群的大量资源! 以上两个负面影响都不是我们想看见的。那么这么多的小文件一般在什么情况下产生?我在这里归纳为以下几种情况:

iOS中设计一个Block代码执行的UIAlertView

老子叫甜甜 提交于 2020-03-02 17:14:06
Windows下的AlertView(比如java的MessageBox, JS的alert('title'))都是阻塞代码继续执行的,举个例子 int result = window.confirm('你会点击取消按钮么?'); console.log("If I havn't confirm, I won't be logged."); if (result == 1) { // some code } iOS原生提供的UIAlertView就不能实现类似的效果,但是依旧可以自己Custom实现,本篇博客将介绍如何在iOS下实现类似windows这样的弹出框,如果不点击确认按钮则不执行后续的代码。 先简单介绍一下iOS中的UIAlertView:UIAlertView是以回调的形式通知调用方,调用完show方法之后,后续的代码可以继续执行,等AlertView处理完之后,会异步通知掉用方我刚才进行了什么操作。 在开始这篇文章之前,你需要准备一些知识(NSRunloop),很多博客有专门的介绍,为了避免重复的博客,在这里不做详细的介绍。如果你还没有了解,那么你得先去了解,可以直接Google NSRunloop 或者直接看官方文档 Threading Programming Guide: Run Loops ,或者如果你不想了解Runloop,如果你有需求