最近集群的Hbase的其中几个节点总是连接不上,最后发现是集群之间的系统时间不同步导致的(hbase的时间戳决定节点之间的时间必须同步)。决定使用的ntp来解决集群之间的系统时间同步问题。
安装ntp
1 | yum install -y ntp |
ntp服务器配置
集群之间的时间同步同样采用sever/client的方式,将其中一个节点做为ntp的服务器,其余作为客户端通过ntp服务来向ntp服务器同步时间。需要选定一台作为ntp server,修该ntp的配置文件。
hadoop的HDFS和MapReduce本身都是用户处理大量数据的大文件,对于小文件来说,由于namenode会在记录每个block对象,如果存在大量的小文件,会占用namenode的大量内存空间,而且HDFS存储文件是按block来存储,即使一个文件的大小不足一个block的大小,文件还是会占用一个block的存储空间,所以大量的小文件会对HDFS的存储和访问都带来不利的影响。
hadoop对于小文件的处理主要有Hadoop Archive,Sequence file和CombineFileInputFormat三种方式。
mapreduce的排序主要分部分排序、全排序和辅助排序(二次排序) 可以直接在reduce中在对数据进行排序,但是这对于reduce的负担太重,数据处理的时间消耗也会大大增加
mapreduce机制中排序只会针对键进行排序,所以如果想对某个数据进行排序,一定要将其设置为map输出的键,排序主要发生在map的spill和合并spill file阶段和reduce拉取复制map端的数据后合并成reduce文件时。
0-1背包问题通常情况下物品的重量是整数的,采用动态规划可以解决,在解决物品重量非整数情况下的背包问题之前,我们先来回顾整数背包问题,并从中寻找解决非整数背包问题的方法。
问题定义:有n种物品和一个容量为$c$的背包,第$i$件物品的重量为$wi$,价格为$vi$,求出哪种物品组合放入背包使物品价值总和最大。
设$p(i,j)$表示在容量为j情况下,将物品$i,i+1…n$组合的放入背包的最优解的值
则其转移方程为
如果 $j>=w_i$ ,$p(i,j) = max(p(i+1,j), p(i+1,j-w_i )+v_i )$
如果 $j<w_i$ , $p(i,j) = p(i+1,j)$
RPC就是远程过程调用,具体什么是RPC,看一个例子就会明白。
比如客户端有一个RPC协议类Protocol。
1 | interfce Protocol{ |
但是客户端没有其实现的具体类,该类在服务端1
2
3
4
5Class ProtocolImpl implenets Protocol{
int add(int a, int b){
return a + b;
}
}
则客户端需要调用ProtocolImpl的add方法,需要将调用的方法及其参数等信息发送给服务端,服务端解析信息,调用ProtocolImpl的add方法,将结果在传输给客户端,而RPC的目的就是使客户端仿佛在调用自身的方法来得到该方法的结果。
在这其中,Protocol就是一个RPC的协议,这个协议其实就是一个接口类,接口中的方法就是对外提供的远程调用方法。