Apache Kylin的CDH部署

Apache Kylin

Apache Kylin是一个开源的分布式分析引擎,最初由eBay开发贡献至开源社区。它提供Hadoop之上的SQL查询接口及多维分析(MOLAP)能力以支持大规模数据,能够处理TB乃至PB级别的分析任务,能够在亚秒级查询巨大的Hive表,并支持高并发。

Kylin的安装

需要预先部署CDH集群,并在kylin官网下载Kylin的安装包
环境如下:

  • CDH 5.10.0
  • apache-kylin-1.6.0-cdh5.7-bin

下载并解压到opt目录下

1
2
tar zvxf apache-kylin-1.6.0-cdh5.7-bin.tar -C /opt
mv /opt/apache-kylin-1.6.0-cdh5.7-bin /opt/kylin-1.6.0
阅读更多

ESXi部署CDH集群

ESXi部署CDH集群机器Clone和网络配置(CentOS 6)

初步配置系统环境并克隆多台Slave,其中网络部分要单独配置如下:

1
2
3
4
5
6
7
8
9
// vi /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=10.1.18.240 //240-244
NETMASK=255.255.255.0
GATEWAY=10.1.18.254

同时,需要为每一节点改为自定义的hostname如下:

1
2
3
// vi /etc/sysconfig/network
NETWORKING=yes
HOSTNAME=hadoop00 //hadoop00-04
阅读更多

MapReduce调优

对应用程序进行调优

  1. 避免输入大量小文件。大量的小文件(不足一个block大小)作为输入数据会产生很多的Map任务(默认一个分片对应一个Map任务),而每个Map任务实际工作量又非常小,系统要花更多的时间来将这些Map任务的输出进行整合。如果将大量的小文件进行预处理合并成一个或几个大文件,任务执行的效率可能会提升几十倍。可手动将小文件合并成大文件,或通过Hadoop的SequenceFile、CombineFileInputFormat将多个文件打包到一个输入单元中,使得每个Map处理更多的数据,从而提高性能。

  2. 输入文件size巨大,但不是小文件。这种情况可以通过增大每个mapper的input size,即增大minSize或者增大blockSize来减少所需的mapper的数量。增大blockSize通常不可行,因为当HDFS被hadoop namenode -format之后,blockSize就已经确定了(由格式化时dfs.block.size决定),如果要更改blockSize,需要重新格式化HDFS,这样当然会丢失已有的数据。所以通常情况下只能通过增大minSize,即增大mapred.min.split.size的值。

阅读更多

MapReduce多目录输出笔记

使用MultipleOutputs实现多目录/文件输出

org.apache.hadoop.mapreduce.lib.output.MultipleOutputs

在map或者reduce类中加入如下方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
private MultipleOutputs<Text, NullWritable> mos;
@Override
protected void setup(Reducer<Text, NullWritable, Text, NullWritable>.Context context)
throws IOException, InterruptedException {
// TODO Auto-generated method stub
super.setup(context);
mos = new MultipleOutputs<Text, NullWritable>(context);// 初始化mos
}
@Override
protected void cleanup(Reducer<Text, NullWritable, Text, NullWritable>.Context context)
throws IOException, InterruptedException {
// TODO Auto-generated method stub
super.cleanup(context);
mos.close();
}
阅读更多

项目中遇到的一些MapReduce优化策略

最近在项目中遇到一些MR可以进行优化的点,记录如下:

小文件合并输入

通过CombineTextInputFormat来合并小文件

1
2
3
4
5
6
//设置split大小
job.getConfiguration().setLong("mapreduce.input.fileinputformat.split.maxsize", 128 * 1024 * 1024);
//job.setInputFormatClass(TextInputFormat.class);

// 合并小文件
job.setInputFormatClass(CombineTextInputFormat.class);
阅读更多

MapReduce应用中CombineFileInputFormat原理与用法

HDFS本身被设计来存储大文件,但是有时难免会有小文件出现,有时很可能时大量的小文件。通过MapReduce处理大量小文件时会遇到些问题。

MapReduce程序会将输入的文件进行分片(Split),每个分片对应一个map任务,而默认一个文件至少有一个分片,一个分片也只属于一个文件。这样大量的小文件会导致大量的map任务,导致资源过度消耗,且效率低下。Hadoop自身包含了CombineFileInputFormat,其功能是将多个小文件合并如一个分片,由一个map任务处理,这样就减少了不必要的map数量。

在了解CombineFileInputFormat之前,我们应了解其父类FileInputFormat的基本处理逻辑。注意这里的FileInputFormat的路径是org.apache.hadoop.mapreduce.lib.input.FileInputFormat,是新的MapReduce API。 mapred包下的FileInputFormat对应老的API,不再推荐使用。

阅读更多

写在 OS X 10.10发布之前——记 OS X 下自用的优秀软件

Mac 系统接触了一年了,感慨颇多,之前写过篇OS X 相见恨晚。现在又突然想写篇文章介绍一些自用的软件,一些大大提高了平时工作效率的应用。

Afloat

Afloat,这软件没有界面,也没有图标,纯粹一插件,安装成功后只要是 Cocoa 框架的软件,都能支持。干什么用的呢,主要是置顶功能,还支持全局快捷键,还支持窗口的透明化,对于一些多软件协作的情况下很有用。

Apptivate

Apptivate 是一款支持全局快捷键切换 App 的软件,还支持长按预览 App,提高效率必备。

Bartender

Bartender 是一款 menubar 扩展软件,很多 App 有 menubar 的快捷显示按钮,放不下的用户有必要用这个来扩展。用了以后妈妈再也不用担心菜单栏太满了。

阅读更多

开源?自由?

最近的一个 shellshock 漏洞闹得沸沸扬扬的。开源不意味着代码一直有人维护,有人修bug。

关于这个问题知乎上也有一些讨(tu)论(cao),忍不住想贴出来。

提到开源,就想到四个月前 Richard Stallman 在浙大的报告会。报告会的主题是自由软件和自由。

Richard Matthew Stallman,GPL 协议的作者,copyleft 的倡导者,也是自由软件基金会创始人。而 RMS 倡导的自由,是道德角度的自由,他认为专利软件是不道德的。有同学提出如果没有专利软件带来的收入,软件工程师如何维生的问题,RMS 居然说 Stealing food is even better than non-free software.(难怪 RMS 的着装,生活,身体状况都不是一般人的情况…)。

毫无疑问,RMS 是一位理想主义者,甚至是一位极端理想主义者,虽然他的想法,在某种程度上,是超前而美好的。他不用手机,他的电脑只用自由软件,系统也是自己的版本,对软件有洁癖(不希望个人数据被收集,所以不使用任何社交软件)。

阅读更多

《创意摄影》读书笔记

我们如果用镜子和窗口这样的一个思维方式去理解摄影和观察世界,无疑将是一个悲剧。你将发现摄影在于创造心灵之窗的图景时,远不如绘画那样得心应手;而在记录真实和揭露真相的使命中,也远不如亲身经历那般真实。那么摄影的位置在哪里?也许游离于其间而左右逢源就是摄影的真正价值和魅力所在。

OS X 相见恨晚

Mac 之所以为 Mac,OS X 功不可没。

OS X 简述

作为地球上排名第二的桌面操作系统,OS X 是艺术设计师和软件工程(ma)师(nong)的不二之选。用了一年的 OS X 系统,要我说对她的想法,能想到的就一个词:相见恨晚。如果说 Windows 是一个方便称手的工具,那么 OS X 就是一位关怀友好的助手。

进系统打开 Finder 我们不会看到磁盘还有多少容量,也不用分区,不用担心软件装在哪个位置会导致系统运行速度变慢,我们需要做的就是马上开始自己要做的事。OS X 简洁明了的界面,简单方便的操作都是建立在苹果软硬件相互配合的基础上。最新的 iOS 8系统,更是提供了不同平台相互协作的功能,保持不同平台一致的用户体验。

阅读更多