- 浏览: 609396 次
- 性别:
- 来自: 大连
最新评论
-
fei33423:
同意你的说法. hbase 的强一致性分为两部分来说. 数据分 ...
浅谈Hbase 的强一致性 -
zengwenbo5566:
,高人,刚安装了 genymotion 那个附带 virtu ...
VirtualBox报错Unable to load R3 module GetLastError=1790 (VERR_UNRESOLVED_ERROR -
kabike:
QQ1289714862 写道这代码有问题吧 bar1 bar ...
AtomicBoolean运用 -
QQ1289714862:
这代码有问题吧 bar1 bar2 那来的 你是不是new了两 ...
AtomicBoolean运用 -
DEMONU:
需要依赖这么多东西啊
hbase 0.96和hadoop 2.2 java 客户端的jar依赖
文章列表
建立无密钥登录最好用ssh-copy-id
但是它有个问题是每次都无脑的在authorized_keys文件中添加数据,容易造成重复,而且如果有很多台服务器要建立的话要运行多次,多次输入"yes",多次输入密码.
利用expect可以实现自动安装
https://github.com/kabike/autoSSHKey
expect脚本的开头一般都写/usr/bin/expect -f,这个-f选项有什么作用呢?
比如如下脚本
#!/usr/bin/expect -f
for {set i 0} {$i < $argc} {incr i} {
puts "arg $i: [lindex $argv $i]"
}
运行./bar.sh -c "puts foo" hehe bar输出如下
引用foo
arg 0: hehe
arg 1: bar
如果改成#!/usr/bin/expect,则输出如下
引用arg 0: -c
arg 1: puts fo ...
1 查询某个yum源安装了哪些包
yum install yum-utils
yumdb search from_repo bar
2 查看哪些包依赖krb5-libs
repoquery --whatrequires krb5-libs
3 利用xargs -n 1,解压多个tar文件
echo *.tgz | xargs -n 1 tar xf
4 利用tee和exec,将一个脚本中所有的输出额外添加到文件中
exec &> >(tee -a "bar.log")
echo "This will be logged to the fil ...
DBQuery.shellBatchSize = 300
http://stackoverflow.com/questions/3705517/how-to-print-out-more-than-20-items-documents-in-mongodbs-shell
各种地方都能配置zookeeper的log4j,真是太烦人了.给用户太多的选择,并不一定能更好的提升用户体验
我一直以为要用cron job和ntpdate,现在发现应该用ntpd.
http://www.ansen.org/2014/01/linuxntpdntpdate_21.html
clojure中的agent实现
- 博客分类:
- tools
最近看了下clojure的并发,其中提到了agent.agent的原理是把对agent的action提交到线程池中运行.它保证线程安全的措施是对每一个agent,同时只有一个actio
在运行.
下面做一个简单的对比,多个线程多次对同一个StringBuilder进行append,如果不同步,结果是不正确的.
final StringBuilder sb = new StringBuilder();
ExecutorService pool = Executors.newFixedThreadPool(Runtime
.getRuntime().availableProce ...
storm中有时需要添加一些metrics监控项,这时需要添加metrics.
在spout或者bolt的prepare方法中注册metrics
public void prepare(@SuppressWarnings("rawtypes") Map stormConf,
TopologyContext context, OutputCollector collector) {
this.collector = collector;
barMetric = new CountMetric();
context.registerMetric(&qu ...
storm中有种应用场景,是迷你批量,比如积攒一定数量的tuple,超过一定时间或者数量之后,把这些tuple统一处理.
想到了以下三种思路
1 在bolt中额外启动一个线程.不过在bolt中启动线程就要考虑并发的问题
2 定义另一个command stream,根据需要向这个command stream发tuple.bolt根据tuple的sourceStreamId判断是正常的stream
还是command stream.
这样需要在建立拓扑时有一些额外操作,比如为command stream建立一个spout,每个bolt用allGrouping从command stream的spout ...
java中获得hostname的方式
- 博客分类:
- linux
最近用storm的过程中发现了一个问题,根源也是hostname获取的不正确.和http://kabike.iteye.com/blog/2111791问题类似
storm,hadoop这些java项目在linux上取得hostname的时候,不是简单调用hostname这个命令,而是调用
InetAddress.getLocalHost().getCanonicalHostName()
显而易见,如果/etc/hosts把hostname设置成127.0.0.1这个回环IP,就很有可能把hostname取成localhost
java的内存counter
- 博客分类:
- 基础
假设需要在内存中维护一个计数器,在storm tuple来时更新计数器的值,最终统一提交到数据库
可以用commons-collection中的Bag或者MultiValueMap,不过效率不高.
用java的Map放Integer主要问题在于Integer是不可变类,每次需要构造新的对象,开销比较大,因此尝试了common-lang中的MutableInt和java.util中的AtomicInteger,这俩的效率不相上下.
不过最快的方式是在Map中放int数组...不过优势也不是特别明显
int size = 10000000;
// 1
long ...
官方文档写的还行.补充几点
1 如果没有自动failover,两个namenode启动后都是standby状态
文档上说用 "hdfs haadmin -failover"命令使其中一个active.
hdfs haadmin -failover命令正确用法是
引用hdfs haadmin -failover node13 node14
2 如果hbase想使用hdfs的ha,需要把hdfs的core-site.xml hdfs-site.xml加入classpath.比如在hbase的conf建立这两个文件的链接,或者在hbase-env.sh加到classpath
就说hdfs的checkpoint node吧,它说
引用Multiple checkpoint nodes may be specified in the cluster configuration file.
哥,你敢具体写么?你这东西各种bug你知道么?
https://issues.apache.org/jira/browse/HDFS-7871
2.7才fix,之前是不是根本没人用
https://issues.apache.org/jira/browse/KAFKA-369
使用consumer的时候要指定zookeeper,使用producer要指定broker.一个集群两种配置,很容易出错.用户体验不好,差评
而且kafka的文档也相当糟糕了...simple consumer根本就没有group的概念,0.8.2以后的java producer也挺模糊.
唉
thrift使用中的一些问题
- 博客分类:
- tools
1 TSimpleServer居然是单线程阻塞式server
2 thrift默认只能有一个service, args.processor(p1).processor(p2)只有最后一个起作用.
thrift的文档真是不行啊