- 博客(41)
- 资源 (4)
- 收藏
- 关注
原创 arthas非常有用的一个命令监控调用方法堆栈性能
trace命令,可以监控某个方法内部所有方法的调用性能情况 $ trace com.test.mobile.popularity.service.cache.PopularityRankCache getCurNotFinishDayPress Ctrl+C to abort.[dump: G:\workspace\popularity\mobile-popularity\mobi...
2018-11-13 20:08:14 12725 1
原创 arthas性能监控,本地调试方法
1、在目标监控进程(要查看该进程popularity中某个方法的性能) ,配置远程调试-Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=8000 2、在arthas 中远程连接上要监控的进程的远程调试,配置如下的连接127.0.0.1 8000 3、在arthas的控制台中,起动监听进程as.bat pid 连...
2018-11-13 16:08:31 11027
原创 spark join shuffle 数据文件的读取
spark join shuffle 数据文件的读取我们看下在shuffle过程中数据文件的读取过程中调用的类对象// 下面就是对这个shuffler中的分片数据进行读取并进行相关的aggregate操作了val blockFetcherItr = new ShuffleBlockFetcherIterator( context, blockManager.shuffleClient,
2017-10-19 16:53:32 630
原创 spark join shuffle 数据读取的过程
spark join shuffle 数据读取的过程在spark中,当数据要shuffle时,这个拉取过程RDD是怎么和ShuffleMapTask 关联起来的。 在CoGroupedRDD通过调用如下函数去读取指定分区的数据 SparkEnv.get.shuffleManager .getReader(shuffleDependency.shuffleHandle, split.in
2017-10-18 18:22:06 1550
原创 spark RDD join的核心过程
spark RDD join的核心过程spark join的过程是查询过程中最核心的过程,怎么做到实现两个表的关联查询耗费资源最少。可看源码如下 join的实现在 PairRDDFunctions类当中。def join[W](other: RDD[(K, W)], partitioner: Partitioner): RDD[(K, (V, W))] = self.withScope {thi
2017-10-18 14:52:18 2487
原创 spark task 任务状态管理
spark task 任务状态管理spark task 的任务状态经常进行更新,当任务完成后,这个任务是怎么取得结果的呢,看下面的代码流程def statusUpdate(tid: Long, state: TaskState, serializedData: ByteBuffer) {var failedExecutor: Option[String] = None// 进行状态的更新 了s
2017-10-16 19:59:25 3764
原创 spark RDD action job的提交过程之 taskSchedule
spark RDD action job的提交过程之 taskSchedule在TaskSchedulerImpl中,有接收task 任务的接口 override def submitTasks(taskSet: TaskSet) {// 提交dag task 任务了val tasks = taskSet.taskslogInfo("Adding task set " + taskSet
2017-10-13 11:26:30 487
原创 spark RDD action job的提交过程
spark RDD action job的提交过程以RDD的 count()方法的例子为例,来演示 dag生成提交的过程。def count(): Long = sc.runJob(this, Utils.getIteratorSize _).sum上面直接调用到 runJob的方法 def runJob[T, U: ClassTag]( rdd: RDD[T], func: (Tas
2017-10-12 20:05:45 492
原创 spark work ResultTask 源码分析
spark work task 源码分析rdd在各个 CoarseGrainedExecutorBackend 进程中,经典的业务执行过程private[spark] class ResultTask[T, U](stageId: Int,stageAttemptId: Int,taskBinary: Broadcast[Array[Byte]],partition: Partition,
2017-10-10 10:53:45 344
原创 spark work task 源码分析
spark work task 源码分析spark 的task 主要以ShuffleMapTask为主,这个类就是在 任务的driver中进行生成然后序列化传输到 work 的CoarseGrainedExecutorBackend进程中进行执行。
2017-09-30 19:20:56 362
原创 spark 业务执行进程
spark 业务执行进程spark的task的业务执行进程的入口类为 CoarseGrainedExecutorBackend通过接收相关的参数调用如下的入口,然后进行创建相关的类
2017-09-30 11:43:40 573
原创 java concurrent 包的基石 volatile 和 锁的原理分析
java concurrent 包的基石 volatile 和 锁的原理分析在concurrent包中,用到很多的锁,如 ReentrantLock锁,里面的核心原理是通过 volatile 的和cas进行操作的。volatile 的读语义和写语义的核心就是禁止指令的重排序。 由于在编译器和处理器会对指令进行重排序,进行指令的优化,但有时这种重排序会导致计算结果的不一致性。 所以由此涉及到数
2016-09-02 14:47:52 1105
原创 phoenix 如何优化成使用索引进行查询源码分析
phoenix 如何优化成使用索引进行查询源码分析在 phoenix 生成执行计划时,最后会进行执行计划的优化,在优化过程中,会根据当前的sql中有没有hint的 提示使用索引,或者查询中用到了索引字段,也会自动转换成用索引表进行关联查询。在下面的方法当中,会根据已有的执行计划,进行优化QueryOptimizer.getApplicablePlans//根据当前的数据执行计划,优化成用索引进行数
2016-08-31 16:11:57 2849
原创 phoenix 写二级索引的触发机制
phoenix 写二级索引的触发机制查看org.apache.phoenix.hbase.index.Indexer 类当中 在该类中覆盖了 preBatchMutate方法,实现预先写数据到hbase中的拦截操作。@Overridepublic void preBatchMutate(ObserverContext<RegionCoprocessorEnvironment> c, Mini
2016-08-31 09:44:15 2785
原创 phoenix local index的使用和join table的原理
phoenix local index的使用和join table的原理下面分析一下索引的协处理器的代码流程UngroupedAggregateRegionObserver.doPostScannerOpen //拿出在scan属性中的数据 byte[] localIndexBytes = scan.getAttribute(LOCAL_INDEX_BUILD); List<Inde
2016-08-25 16:00:16 1515
原创 phoenix local index 本地索引分裂源码分析
phoenix 本地索引分裂源码分析phoenix的表有时要建立二级索引,这里可以分为local和global,下面分析一下当数据表进行分拆时,对应的该本地索引表 的拆分情况。(本地索引表和数据表对应的数据区间保证存放在同一个regionserver中)。LocalIndexSplitter 类分析public void preSplitBeforePONR(ObserverContext<Reg
2016-08-24 14:37:07 2043
原创 phoenix select 查询源码分析
phoenix select 查询源码分析如下执行一个Sql的查询语句ResultSet rst = conn.createStatement().executeQuery("select * from test.person");创建的statement对象为 PhoenixStatement,然后进入到这个对象的方法中进行查询@Overridepublic ResultSet execut
2016-08-11 10:40:10 3989
原创 phoenix upsert 源码分析
phoenix查询源码分析。在之前的driver源码分析的基础上,现在分析一下UPSERT的流程SET_ASYNC_CREATED_DATE ="UPSERT INTO " + SYSTEM_CATALOG_SCHEMA + ".\"" + SYSTEM_CATALOG_TABLE + " PreparedStatement setAsync = connection.prepareState
2016-08-03 17:43:42 2404 2
原创 phoenix预创建表拆分key的源码分析
phoenix预创建表拆分key的源码分析在 ConnectionQueryServicesImpl.createTableInternal 方法当中,要分析表是否需要预先分区, if (parent != null && tableType == PTableType.INDEX && indexType == IndexType.LOCAL) {tableProps.put(MetaDat
2016-08-03 14:55:19 1089
原创 phoenix jdbc driver查询源码分析
phoenix driver查询源码分析首先 phoenix 支持jbbc协议,则就要按装jdbc的协议接口进行处理。 首先要实现driver PhoenixDriver,这个driver负责连接的创建,和连接到目标 服务器端的链接创建。 在该类中有一个创建链接的方法protected final Connection createConnection(String url, Properti
2016-08-03 14:27:11 3330
原创 hbase 权限控制源码分析
–hbase 权限控制源码分析在hbase中可以通过 grant ‘alice’, ‘RW’, ‘hbase_perf.table20’ 命令把一个读写权限分配给一个命名空间下面的一个表其实是通过rpc 调用发送到 AccessController 这个类当中可以通过查看该类的继续关系 public class AccessController extends BaseMasterAndR
2016-07-26 11:48:09 3068
原创 hbase客户端源码分析--deletetable
–hbase 删除表HBaseAdmin admin = new HBaseAdmin(conf);可以查看源码,其实低层也是调用创建 HConnectionImplementation 对象进行连接管理的admin.disableTable(tableName);然后失效一个表, 里面类似于delete操作一下,创建一个回调临时对象DisableTableResponse response
2016-07-18 17:23:55 1002
原创 hbase客户端源码分析--put流程
—client 的调用流程table.put(put); 操作HTable table = new HTable(conf, Bytes.toBytes(tableName));调用流程如上面的delete流程一样 首先创建一个muti的操作对象new BufferedMutatorImpl(this, rpcCallerFactory, rpcControllerFactory, params
2016-07-18 15:56:48 1070
原创 hbase客户端协议修改
hbase 的客户端 协议修改(源码基于hbase-1.1.5版本) hbase 的客户端通过 RpcClientImpl 进行远程的rpc调用客户端连接到远程是通过RpcClientImpl 进行管理的,通过创建 createSocket 进行连接到远程的服务端 通过 connectionmanager.getStubKey 拿到远程链接,创建到远程对应的ip端口 NetUtils.conn
2016-07-15 19:32:31 1611
原创 hbase客户端源码分析调用
—client 的调用流程delete 数据的流程.(table.delete(deleteColumn);)HTable 对象创建时调用如下方法创建对远程的链接对象管理器ConnectionManager.getConnectionInternal(conf) ConnectionFactory.createConnection(conf, managed, pool, user)默认为 HC
2016-07-15 18:08:36 1305
原创 hbase服务端源码分析
—client –>hmaster 和 client —> regionserver的流程 服务端主要有两个进程,hmaster 和 HRegionServer(其实 hmaster继承于 HRegionServer,这两个进程中既提供了web界面,同时也提供了rpc服务的调用, 如web服务在hmaster中是 http://127.0.0.1:16010/master-s
2016-07-15 17:26:00 850
原创 window下eclipse中运行hbase
首先在hbase 在window下面编译成功 我编译的是 hbase-1.1.5 版本,具体编译问题,可以查看我的前一文章。 当编译成功后,修改 hbase-1.1.5/conf/hbase-site.xml 中的为 <property> <name>hbase.rootdir</name> <value>D:/tmp/hbase/root</value>
2016-07-14 10:36:25 542
原创 hbase远程调试
打开配置文件 hbase-env.sh 中的 export HBASE_MASTER_OPTS="$HBASE_MASTER_OPTS -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=8070"然后在eclipse 或者idea中,编译成功对应版本的源码,创建application remote debug 输
2016-07-14 10:27:29 838
原创 hbase按装
vi /etc/profile 文件,增加如下路径export HBASE_HOME=/data/hadoop/apps/hbase-1.1.5export PATH=$HBASE_HOME/bin:$PATH–修改conf目录下面的hbase-site.sh 文件,增加如下内容<configuration> <property> <name>hbase.rootdir</nam
2016-07-14 10:11:03 354
原创 elasticsearch 生产参数配置
cluster.name: testindex node.master: false node.data: true index.store.type: niofs index.cache.field.type: soft indices.recovery.max_bytes_per_sec: 250mb node.max_local_storage_nodes: 1 i
2016-07-14 10:01:38 1049
原创 elasticserch 测试优化参数
一、JVM配置: Jdk1.8(es要求最低jdk1.7) 最大堆最小堆均为32G GC类型:-XX:+UseG1Gc -XX:MaxGCPauseMillis=200 。 其他默认。 二、Es集群配置:cluster.name: estest node.name: “testanya”node.master: false node.data: trueindex.store.type
2016-07-14 09:58:14 3957
原创 编译android指定模块
在前面编译完整个android后,现在开始可以编译指定模块cd ~/android执行. ./build/envsetup.sh有下面命令 - croot: Changes directory to the top of the tree. - m: Makes from the top of the tree. -
2015-05-31 16:14:41 842
原创 研究android系统架构层次
如借用其它人员研究的wifi层次,对比android 下载后的源码。可看到android一层一层的架构层次是怎么样的。并了解一个android系统是怎么跑起来的。 所以平时我的的android开发大部分是在java应用层,一些深层次点的就是ndk编码,会通过进行ndk编码。如proxydroid.他的代理功能其实就是用到了ndk,通过jndi接口,调用到一个c++层,
2015-05-31 15:01:26 1385
原创 android 源码编译
1. 磁盘空间预留40G左右,内存3G,因为下载的androd文件非常多并且编译后,会生成很多文件 2. virchobox 3. 按装 Ubuntu 我的版本是12.04 4. 安装Git工具。Android源代码采用Git工具来管理, sudo apt-get install git-core gnupg
2015-05-31 11:26:41 718
原创 sql 子串处理
<br />--pl/sql中的indexof和lastindexof instr INSTR('CORPORATE FLOOR','OR', 3, 2)中,源字符串为'CORPORATE FLOOR', 目标字符串为'OR',起始位置为3,取第2个匹配项的位置。<br />--默认查找顺序为从左到右。当起始位置为负数的时候,从右边开始查找<br />select substr('2.3.30.41',INSTR('1.2.30.1', '.', -1, 1)+1) FROM DUAL<br /> <br
2010-12-13 13:47:00 700
原创 sql with 子查询
<br />with<br />sql1 as (select to_char(a) s_name from test_tempa),<br />R ]F5^5"KFW0n B0sql2 as (select to_char(b) s_name from test_tempb where not exists (select s_name from sql1 where rownum=1))<br />select * from sql1ITPUB个人空间2g N*` O3y2eB Q6}<br />un
2010-12-13 13:46:00 1922
原创 EJB Transaction部分
<br />Transaction部分<br /> <br />基本概念和词汇:<br />n Transaction object (or Transaction component): 是一个参与在事务当中的组件。如:Ejb 组件、.Net组件、Corba组件等。<br />n Transaction manager: 负责管理Transaction objects的事 务操作。就像乐队中的指挥一样。<br />n Resource:持久的数据源。如:数据
2010-12-13 13:43:00 1245
原创 打印JS
function DP() //mainFrame网页中函数 { window.focus(); if (window.print) { window.status='none'; // window.print(); doPrint(); } }function doPrint() {///隐藏不需要打印的内容 try { PageSetup_Null(); } ca
2010-12-13 13:38:00 519
原创 HTML插入Flash
1.插入透明flash代码codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0"width="373" height="166" align="center">align="center" quality="high"plu
2010-12-13 13:31:00 3149
android 动态加载class
2015-05-24
APK加壳demo
2015-05-10
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人