VEGA Transform功能

  Vega 学习 #BI/大数据 Transform aggregate 聚合操作,fields 和 ops 两个数组对应,产生的结果在as 属性中指明: [ {“foo”: 1, "bar": 1}, {“foo”: 1, “bar”: 2}, {“foo”: null, “bar”: 3} ] 执行aggregate 转换 { “type”: "aggregate”, “fields”: [“foo”, “bar”, “bar”], “ops”: [“valid”, “sum”, “median”], "as": ["v", "s", "m"] } 结果 [{“v”: 2, "s": 6, "m”: 2}] 以上是对所有数据集进行聚合操作,结果为1行数据,可使用groupby,产生分组数据: [ {“foo”: "a", "bar”:

打开JDK及其他底层API日志接口,诊断程序问题

#Java/JMX 遇到一个问题,使用JMX 连接Tomcat,连接的IP是10.1.0.?,在创建连接的时候,会抛出网络连接超时的Exception,迷茫的是,Exception中提示是10.0.0.?的网络连接超时。 一时各种怀疑,但是都找不到问题;后在stackoverflow 上找到打开JMX日志的方式,觉得此方法具有解决这一类问题的通适性。 创建属性文件(.properties)```handlers= java.util.logging.ConsoleHandler.level=ALL java.util.logging.FileHandler.pattern = jmx.logjava.util.logging.FileHandler.limit = 50000java.util.logging.FileHandler.count = 1java.util.logging.FileHandler.formatter = java.util.logging.XMLFormatter java.util.logging.ConsoleHandler.level = FINESTjava.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter // Use FINER or FINEST for javax.management.remote.level - FINEST is// very verbose...//javax.management.level=FINESTjavax.management.remote.level=FINEST java.security.debug=all``` 在调用测试程序时,配置使用上述属性文件:```java -Djava.util.logging.config.file=./logging.properties JMXDemoClient ``` _假设你的测试程序被编译为 JMXDemoClient.class_ 通过这种方式,在我的案例中,日志清楚的显示,是JMX Server(此处是Tomcat)要客户端去跟10.0.0.? 连接;所以一定是Tomcat端的配置有问题,进行检查后,发现服务器IP地址变更后,`java.rmi.server.hostname` 没有做更新,仍然是原来的IP地址。 总结: 通过调整属性文件,可以输出任意底层API的各种级别日志。

使用Logstash JDBC获取Oracle数据的小问题

需要将Oracle中的数据,通过Logstash JDBC input插件,写入到Elasticsearch中,遇到了一个因为时间类型设置不正确导致的性能问题。为了能够不断的将数据增量写入Elasticsearch,做了如下配置: record_last_run => true        tracking_column => "mark_datetime"       tracking_column_type => "timestamp"        use_column_value => true 这里设置tracking_column_type出现了问题,数据库表中mark_datetime字段是Date类型。虽然整个pipline能够运行无误,但是运行效率发现不够好。到Oracle数据库中检查,发现SQL语句变成了 SYS_EXTRACT_UTC("M"."MARK_DATETIME")>TIMESTAMP' 2015-07-19 11:17:03.000000000’ 这就导致了MARK_DATETIME上现有的索引不能使用。Oracle在Date和Timestamp之间自动做了转换。

Run Blessed-contrib on windows

  With blessed-contrib it is easy to create terminal dashboards using ascii-art: blessed-contrib uses Braille fonts which are available by default on Linux and Mac distributions but not on Windows: In order to run such dashboards on windows you need to perform the following steps: 1. Download, open and install the FreeMono font.2. Follow these

Elasticsearch vs. Hadoop For Advanced Analytics

A Tale of Two Platforms Elasticsearch 是卓越的文档索引以及全文检索工具。其基于JSON的DSL(Domain Specific query Language)简单而又强大(我觉得比SQL还差得远,好在近期新的版本发布了Elastic SQL :),使得其成为web app中集成搜索引擎的事实上的标准。那么作为analytics 后端是否胜任呢? 我们是否真的找到了一个“Hadoop”杀手呢? 首先来回忆一下一个高级“分析”系统一般都是如何构建的。开始的时候,你的app可能只需要像“mixpanel”或者“Google Analytics”这样的功能就够了,随着系统发展,产品经理的问题变得越来越难以回答: “What's the completion rate for femail Chinese users in my newly defined cohort X through the revamped user action funnel Y?” 这一问题需要cohort X的用户数据被摄取、标记出来后,再执行自定义查询来回答。为解答此问题,你需要开始收集访问日志数据,构建一个完全的“分析流水线”。经过一番调研后你会发现,有不少已有的解决方案是构建于Hadoop基础之上的,但是越来越多的开发者开始考虑使用Elasticsearch来做这件事情。怎么会这样的?一个搜索引擎真的会适合“分析”工作么? Elasticsearch For Analytics Elastic的ELK分析套件,包括Logstash(负责搜集服务器端日志)、Kibana(可视化窗口)在web分析应用中,得到了很多应用,因为: 1. 首先你非常容易运行起一个Elasticsearch实例 2. Elasticsearch 基于JSON的查询语言比Hadoop的MapReduce要容易操作的多 3. 对于应用开发者,Elasticsearch是工具箱中的一个已有工具,而Hadoop套件可能需要他们去全新的学习 这些原因,导致那些需要快速启动、运行分析需求解决方案的,会更倾向于选择Elasticsearch。但是一个搜索引擎,用他们执行“数据摄取”、数据分析工作,比起像Hadoop这样的具备高度扩展能力的分布式数据处理平台,其表现如何呢? Streaming Ingestion(流式数据摄取) 很多团队,会被Elasticsearch

删除Oracle Undo表空间

近期处理了一次删除、重建Undo表空间的事情,有些细节还是值得记下来备忘。事情的起因是工程师需要将分布在不同ASM磁盘组里的Oracle数据库文件,迁移到新建的ASM磁盘组,操作过程中,错误的删除了Undo磁盘组的所有文件。版本 11.2.0.4, RAC环境——测试、准生产环境;下文操作不保证在“生产环境”无害。 Step 1: 考虑新建Undo Tablespace,然后修改各个实例(Instance)的Undo_Tablespace 参数,使用新的Undo,然后删除老的Undo 表空间。 Step 2: 发现,此时无法新建表空间,报错Undo表空间的数据文件不可访问。 分析:我没有去细究原因,我想原因可能有两个,1是因为使用自动Undo管理,创建表空间的操作也需要获取Undo,所以报错??2是因为新建表空间,会触发类似checkpoint之类操作,有Active Tx还需要访问Undo?? Step 3:   修改undo_management=manual,再重试之前步骤 alter system set undo_management=manual sid=‘*’; Step 4: drop tablespace undotbs1 including contents and datafiles; Step 5: drop tablespace UNDOTBS2 including contents and datafiles * ERROR at line 1: ORA-01548: active rollback segment ‘_SYSSMU1_3780397527$’ found, terminate dropping tablespace

Node.js Step 的使用

## 解决的问题 在Node.js中,绝大多数实际业务操作都是异步调用,比如文件IO,数据库操作,网络IO等等…… 当这些“耗时”操作完成后,会调用特定的操作,进行后续处理(这个后续的操作被称作callback 函数,作为之前的异步操作调用的最后一个参数)。 如果一个后台调用包含如下步骤: 1. 读取数据库,成功后, 2. 调用ERP接口,下生产订单,成功后, 3. 发送Email通知,成功后, 4. 写入数据库 这样的话,第一个调用的最后一个参数是步骤2对应的callback方法,这个方法再调用步骤3方法、再调用步骤4方法…… 整个效果,就是代码缩进后,越来越往右偏。Step就是为了解决这个问题,以一种“非嵌套”的方式,实现之前的这种调用结构。 ## 如何使用 step 库对外提供唯一的函数——Step。这个函数接受多个函数作为输入参数,这些参数对应的函数,其callback函数(*最后一个参数*)如果是 _this_,Step就会把下一个参数对应的函数,作为前一个函数调用的callback方法。 Step ( function readSelf() { fs.readFile(__filename, this); }, function capitalize(err, text) { if (err) throw err; return text.toUpperCase(); }, function showIt(err, newText) { if (err) throw err; console.log(newText); } ); 上例,第一个参数readSelf,包含一个异步调用readFile,我们在该传入callback 函数的位置,传入this。这就保证在异步操作完成后(readFile结束),Step会将读取的文件内容传递到下一个参数对应的函数(这个函数的格式像是普通的callback函数,第一个参数是err,第二个参数表示操作成功后获取的data)。本例中,第二个参数内执行的是“同步”操作,只需要直接return 结果。Step 会将结果,传递到下一个参数对应的函数showIt。

Linux 工具介绍:pidstat

# Linux工具介绍: pidstat 相较于传统、老旧的top,ps命令,pidstat能解决那些问题? 查看指定进程的stats 查看指定进程的磁盘操作(读、写)stats 查看指定进程所有线程(threads)的stats 查看每一个活动进程的CPU stats报告 获取: 进程触发了多少次 Context Switches (cs) 获取: 指定进程的内存使用、page faults 确认指定进程有无内存泄露 由上可知,pidstat提供了很多新能力,象查看进程的IO读写、内存使用等等,在分析诊断问题的时候都是关键的判断因素。 安装  不是最基础的Unix工具集成员,需要单独安装,属于 sysstat 包 ~ yum install sysstat ~ 用法: 查看指定进程的I/O stats ~ # pidstat -d -p interval count ~ ~ # pidstat -d -p 6417 2 10 ~ 6417 是我系统中OpenShift的进程ID, 2表示间隔2秒,10 表示采样10次,下面的输出显示,虽然这个进程是我系统中最消耗CPU的,但是并没有什么I/O操作。 _ ccwr: canceled writes

Linux 扩展ROOT文件系统

  Step 1: 确认磁盘分区使用 df -h Step 2: 格式化磁盘为LVM分区 fdisk /dev/sdb # 主分区 # 修改分区的系统类型为8e(Linux LVM) # 保存修改 Step 3: 创建pv(物理卷) pvcreate /dev/sdb1  pvdisplay  Step 4: 将新创建的pv添加到vg中 显示系统中已有vg vgdisplay  添加pv vgextend /dev/name-of-volume-group /dev/sdb1  Step 5: 修改root lv的大小,以占用所有分配空间 lvextend -l 100%FREE /dev/name-of-volume-group/root  确认修改 lvdisplay  Step 6: 应用修改到filesystem 查看 df -h  扩展文件系统 ext4 filesystem resize2fs /dev/name-of-volume-group/root  xfs

Aix平台查看进程打开的文件

最近刚好处理了一个Oracle数据库因为file descriptor耗尽,不能继续工作的案例。Oracle的MNL进程,打开了太多的文件,导致了这个错误。 背景: Unix中一切皆文件,socket,file… /proc 虚拟文件系统可以方便查看进程信息,包括打开的文件(fd,file descriptor) 大多数linux系统可以使用lsof来查看、使用/proc中包含的信息 Aix环境查看进程打开的文件 进入/proc/<mnl_process_pid>目录,查看fd子目录,可以查看所有打开的fd(file descriptor) # cd /proc/184422/fd# ls -l 这个文件夹下都是一些数字(fd),接下来使用相关工具,找到打开的都是什么文件 procfiles 命令 procfiles <process_pid> —— 命令使用方式 # procfiles 184422 Current rlimit: 2147483647 file descriptors    4: S_IFREG mode:0444 dev:10,5 ino:13407 uid:0 gid:0 rdev:0,0       O_RDONLY size:4811  会显示如上所示的信息,4 是 fd,文件在设备10,5上,文件系统的inode是13407下面我们来查看dev:10,5 对应哪块磁盘 # cd /dev # ls -l