仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 534|回复: 12
打印 上一主题 下一主题

[学习教程] JAVA网站制作之HBase的两个非常排查仓酷云

[复制链接]
逍遥一派 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-18 11:20:31 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
在1995年5月23日以“Java”的名称正式发布了。1,写HBase莫名卡住

之前有个多线程数据同步程序在写HBase时偶然会卡住,从jstack剖析,有一个线程block在
而其他要写统一个regionserver的线程block在下面这把锁。
在HBaseclient的代码中发明在机关out对象的时分,timeout设成了0.详细代码以下:


接着看write这个挪用

当挪用write时,先写channel的buffer,写满今后,将数据发送进来。

好了,从代码路径上看到,恰是卡在selector.select这个中央,由于在机关的时分设置了timeout为0,0意味着无穷守候。
select是当注册的channel停当时就前往,关于读的,通道缓存中意味着停当,关于写,将通道的数据清空意味着停当。而写只是用户空间的缓存数据移到内核空间,实际上是不会失利的,除非收集有成绩,Send-Q里的数据一向没发送进来。
而经由过程netstat看到情形证明了这一点,regionserver地点的呆板在18:15时已当机,当机缘故原由,但client地点的呆板在19:30仍然有如许的tcp毗连
tcp065160::ffff:{clientip}:57589::ffff:{serverip}:30020ESTABLISHED
毗连形态仍是ESTABLISHED,关于client来讲,仍是一个一般的链接,可是写又写不出来,征询了内核专家,得知这是内核的一个bug。那
如今看上往可行的办理办法只能是在hbaseclient的代码里
加超时了
相干同事提交了issue到社区https://issues.apache.org/jira/browse/HBASE-8558,在0.94.16已被修复。
2,多线程读写HBase的一个注重点

仍是这个程序,某天报了个错

1
2
3
4
5
6
7
8

java.util.concurrent.ExecutionException:java.lang.RuntimeException:java.lang.OutOfMemoryError:unabletocreatenewnativethread
atjava.util.concurrent.FutureTask$Sync.innerGet(FutureTask.java:222)
atjava.util.concurrent.FutureTask.get(FutureTask.java:83)
atorg.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatchCallback(HConnectionManager.java:1604)
atorg.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatch(HConnectionManager.java:1456)
atorg.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:1011)
atorg.apache.hadoop.hbase.client.HTable.put(HTable.java:834)
atcom.taobao.dump.sapclient.client.HbaseClient.set(HbaseClient.java:224)



看毛病信息,不克不及创建新的线程,和之前集群晋级时碰到的一个成绩相似,剖析是某个程序建了大批的线程,到达了体系的下限。看呆板上跑的历程的,最年夜多是这个程序本人。从堕落信息剖析,分离hbase源码,在每一个htable创建的时分,会初始化一个线程池。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

intmaxThreads=conf.getInt("hbase.htable.threads.max",Integer.MAX_VALUE);
if(maxThreads==0){
maxThreads=1;//isthereabetterdefault?
}
longkeepAliveTime=conf.getLong("hbase.htable.threads.keepalivetime",60);
//Usingthe"directhandoff"approach,newthreadswillonlybecreated
//ifitisnecessaryandwillgrowunbounded.ThiscouldbebadbutinHCM
//weonlycreateasmanyRunnablesasthereareregionservers.Itmeans
//italsoscaleswhennewregionserversareadded.
this.pool=newThreadPoolExecutor(1,maxThreads,
keepAliveTime,TimeUnit.SECONDS,
newSynchronousQueue<Runnable>(),
Threads.newDaemonThreadFactory("hbase-table"));
((ThreadPoolExecutor)this.pool).allowCoreThreadTimeOut(true);




首先java功能强大的背后是其复杂性,就拿web来说,当今流行的框架有很多,什么struts,spring,jQuery等等,而这无疑增加了java的复杂性。
第二个灵魂 该用户已被删除
沙发
发表于 2015-1-20 20:46:02 | 只看该作者
另外编写和运行Java程序需要JDK(包括JRE),在sun的官方网站上有下载,thinking in java第三版用的JDK版本是1.4,现在流行的版本1.5(sun称作J2SE 5.0,汗),不过听说Bruce的TIJ第四版国外已经出来了,是专门为J2SE 5.0而写的。
因胸联盟 该用户已被删除
板凳
发表于 2015-1-29 05:12:29 | 只看该作者
任职于太阳微系统的詹姆斯·高斯林等人于1990年代初开发Java语言的雏形,最初被命名为Oak,目标设置在家用电器等小型系统的程序语言
老尸 该用户已被删除
地板
发表于 2015-2-2 22:07:36 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
再见西城 该用户已被删除
5#
发表于 2015-2-3 20:52:39 | 只看该作者
所以现在应用最广泛又最好学的就是J2EE了。 J2EE又包括许多组件,如Jsp,Servlet,JavaBean,EJB,JDBC,JavaMail等。要学习起来可不是一两天的事。那么又该如何学习J2EE呢?当然Java语法得先看一看的,I/O包,Util包,Lang包你都熟悉了吗?然后再从JSP学起。
分手快乐 该用户已被删除
6#
发表于 2015-2-6 07:56:39 | 只看该作者
[url]http://www.jdon.com/[/url]去下载,或到同济技术论坛的服务器[url]ftp://nro.shtdu.edu.cn[/url]去下,安装上有什么问题,可以到论坛上去提问。
海妖 该用户已被删除
7#
发表于 2015-2-10 06:52:13 | 只看该作者
在全球云计算和移动互联网的产业环境下,Java更具备了显著优势和广阔前景。
爱飞 该用户已被删除
8#
发表于 2015-2-11 03:01:54 | 只看该作者
Sun公司看见Oak在互联网上应用的前景,于是改造了Oak,于1995年5月以Java的名称正式发布。Java伴随着互联网的迅猛发展而发展,逐渐成为重要的网络编程语言。
逍遥一派 该用户已被删除
9#
 楼主| 发表于 2015-2-28 19:11:55 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
小女巫 该用户已被删除
10#
发表于 2015-3-6 00:34:49 | 只看该作者
你就该学一学Servlet了。Servlet就是服务器端小程序,他负责生成发送给客户端的HTML文件。JSP在执行时,也是先转换成Servlet再运行的。虽说JSP理论上可以完全取代Servlet,这也是SUN推出JSP的本意,可是Servlet用来控制流程跳转还是挺方便的,也令程序更清晰。接下来你应该学习一下Javabean了,可能你早就看不管JSP在HTML中嵌Java代码的混乱方式了,这种方式跟ASP又有什么区别呢?
灵魂腐蚀 该用户已被删除
11#
发表于 2015-3-11 19:49:14 | 只看该作者
是一种简化的C++语言 是一种安全的语言,具有阻绝计算机病毒传输的功能
不帅 该用户已被删除
12#
发表于 2015-3-19 10:35:00 | 只看该作者
自从Sun推出Java以来,就力图使之无所不包,所以Java发展到现在,按应用来分主要分为三大块:J2SE,J2ME和J2EE,这也就是Sun ONE(Open Net Environment)体系。J2SE就是Java2的标准版,主要用于桌面应用软件的编程;J2ME主要应用于嵌入是系统开发,如手机和PDA的编程;J2EE是Java2的企业版,主要用于分布式的网络程序的开发,如电子商务网站和ERP系统。
乐观 该用户已被删除
13#
发表于 2015-3-27 19:09:58 | 只看该作者
Java是一个纯的面向对象的程序设计语言,它继承了 C++语言面向对象技术的核心。Java舍弃了C ++语言中容易引起错误的指针(以引用取代)、运算符重载(operator overloading)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-12-23 21:36

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表