新書推薦:
《
大宋理财:青苗法与王安石的金融帝国(全彩插图本)
》
售價:HK$
109.8
《
安全感是内心长出的盔甲
》
售價:HK$
67.0
《
快人一步:系统性能提高之道
》
售價:HK$
110.9
《
算法图解(第2版)
》
售價:HK$
78.2
《
科学的奇幻之旅
》
售價:HK$
77.3
《
画艺循谱:晚明的画谱与消闲
》
售價:HK$
143.4
《
新民说·现实政治史:从马基雅维利到基辛格
》
售價:HK$
99.7
《
宽容是件奢侈品(人生360度·一分钟经典故事)
》
售價:HK$
44.6
|
編輯推薦: |
Apache Kylin将传统的数据仓库及商务智能分析能力带入到了大数据时代,作为新兴的技术已经被广大用户所使用。作为创始作者,我非常欣喜能看到关于Apache Kylin相关书籍的出版, 这无疑对中国用户更好地使用Kylin,解决实际的大数据分析架构及业务问题有很大帮助。
韩卿
Kyligence 联合创始人兼CEO,Apache Kylin项目管理委员会主席PMC Chair
伴随着大数据发展的三条主线是大数据技术、大数据思维和大数据实践。因为RDBMS很难处理单表10亿行数据,所以大数据技术应需而生。大数据技术从*初的解决海量数据的快速存储和读取,到今天的海量数据的OLAP,当中衍生出众多的技术产品,ApacheKylin就是其中的一个优秀产品,目标是解决大数据范畴中的OLAP。
Kyligence 联合创始人兼CEO,Apache Kylin项目管理委员会主席(PMC Chair)韩卿
武汉市云升科技发展有限公司董事长,《智慧城市大数据、物联网和云计算之应用》作者杨正洪
万达网络科技集团大数据中心副总经理,《Spark高级数据分析》中文版译者龚少成
数据架构师,
|
內容簡介: |
Apache Kylin是一个开源的分布式分析引擎,提供Hadoop之上的SQL查询接口及多维分析(OLAP)能力以支持超大规模数据,最初由eBay公司开发并贡献至开源社区。它能在亚秒内查询巨大的Hive表。
本书分为21章,详细讲解Apache Kylin概念、安装、配置、部署,让读者对Apache Kylin构建大数据分析平台有一个感性认识。同时,本书从应用角度,结合Dome和实例介绍了用于多维分析的Cube算法的创建、配置与优化。最后还介绍了Kyligence公司发布KAP大数据分析平台,对读者有极大的参考价值。
本书适合大数据技术初学者、大数据分析人员、大数据架构师等,也适合用于高等院校和培训学校相关专业师生教学参考。
|
關於作者: |
蒋守壮,现就职于万达网络科技集团有限公司,资深大数据工程师,大数据实践者。曾任平安科技资深大数据分析师和架构师,CSDN社区专家,知识库特邀编辑。目前专注于Docker、Kubernetes、Mesos、Hadoop、Spark和Kylin等技术领域。
|
目錄:
|
第一部分 Apache Kylin基础部分
第1章 Apache Kylin前世今生 3
1.1 Apache Kylin的背景 3
1.2 Apache Kylin的应用场景 3
1.3 Apache Kylin的发展历程 4
第2章 Apache Kylin前奏 7
2.1 事实表和维表 7
2.2 星型模型和雪花型模型 7
2.2.1 星型模型 7
2.2.2 雪花型模型 8
2.2.3 星型模型示例 8
2.3 OLAP 9
2.3.1 OLAP分类 9
2.3.2 OLAP的基本操作 10
2.4 数据立方体(Data Cube) 11
第3章 Apache Kylin 工作原理和体系架构 12
3.1 Kylin工作原理 12
3.2 Kylin体系架构 13
3.3 Kylin中的核心部分:Cube构建 15
3.4 Kylin的SQL查询 16
3.5 Kylin的特性和生态圈 16
第4章 搭建CDH大数据平台 18
4.1 系统环境和安装包 19
4.1.1 系统环境 19
4.1.2 安装包的下载 20
4.2 准备工作:系统环境搭建 21
4.2.1 网络配置CDH集群所有节点 21
4.2.2 打通SSH,设置ssh无密码登录(所有节点) 21
4.3 正式安装CDH:准备工作 29
4.4 正式安装CDH5:安装配置 30
4.4.1 CDH5的安装配置 30
4.4.2 对Hive、HBase执行简单操作 39
第5章 使用Kylin构建企业大数据分析平台的4种部署方式 41
5.1 Kylin部署的架构 41
5.2 Kylin的四种典型部署方式 42
第6章 单独为Kylin部署HBase集群 44
第7章 部署Kylin集群环境 58
7.1 部署Kylin的先决条件 58
7.2 部署Kylin集群环境 61
7.3 为Kylin集群搭建负载均衡器 70
7.3.1 搭建Nginx环境 70
7.3.2 配置Nginx实现Kylin的负载均衡 73
第二部分 Apache Kylin 进阶部分
第8章 Demo案例实战 77
8.1 Sample Cube案例描述 77
8.2 Sample Cube案例实战 78
8.2.1 准备数据 78
8.2.2 构建Cube 81
第9章 多维分析的Cube创建实战 89
9.1 Cube模型 89
9.2 创建Cube的流程 90
9.2.1 步骤一:Hive中事实表,以及多张维表的处理 90
9.2.2 步骤二:Kylin中建立项目(Project) 95
9.2.3 步骤三:Kylin中建立数据源(Data Source) 95
9.2.4 步骤四:Kylin中建立数据模型(Model) 98
9.2.5 步骤五:Kylin中建立Cube 104
9.2.6 步骤六:Build Cube 114
9.2.7 步骤七:查询Cube 118
第10章 Build Cube的来龙去脉 120
10.1 流程分析 120
10.2 小结 134
第三部分 Apache Kylin 高级部分
第11章 Cube优化 137
第12章 备份Kylin的Metadata 142
12.1 Kylin的元数据 142
12.2 备份元数据 143
12.3 恢复元数据 146
第13章 使用Hive视图 147
13.1 使用Hive视图 147
13.2 使用视图实战 149
第14章 Kylin的垃圾清理 153
14.1 清理元数据 153
14.2 清理存储器数据 154
第15章 JDBC访问方式 157
第16章 通过RESTful访问Kylin 161
第17章 Kylin版本之间升级 179
17.1 从1.5.2升级到最新版本1.5.3 179
17.2 从1.5.1升级到1.5.2版本 180
17.3 从Kylin 1.5.2.1升级到Kylin 1.5.3实战 181
17.4 补充内容 187
第18章 大数据可视化实践 189
18.1 可视化工具简述 189
18.2 安装Kylin ODBC驱动 190
18.3 通过Excel访问Kylin 192
18.4 通过Power BI访问Kylin 194
18.4.1 安装配置Power BI 194
18.4.2 实战操作 198
18.5 通过Tableau访问Kylin 199
18.6 Kylin Mondrian Saiku 205
18.7 实战演练:通过Saiku访问Kylin 211
18.7.1 第一个Schema例子:myproject_pvuv_cube的演示 211
18.7.2 第二个Schema例子:kylin_sales_cube的演示 219
18.7.3 Saiku使用的一些问题 223
18.8 通过Apache Zepplin访问Kylin 229
18.9 通过Kylin的Insight查询 232
第19章 使用Streaming Table 构建准实时Cube 236
第20章 快速数据立方算法 251
20.1 快速数据立方算法概述 251
20.2 快速数据立方算法优点和缺点 253
20.3 获取Fast Cubing算法的优势 254
第四部分 Apache Kylin的扩展部分
第21章 大数据智能分析平台KAP 257
21.1 大数据智能分析平台KAP概述 257
21.2 KAP的安装部署 259
|
內容試閱:
|
自2011年下半年开始,我就一直关注Apache开源社区,侧重点放在大数据方面的成熟框架和产品。在这期间,陆续研究过Hadoop、Hive、HBase、Mahout、Kafka、Flume、Storm,以及近两年很火的Spark和Flink等,和很多从事大数据的朋友一样,经历过无数的夜晚,对着电脑屏幕逐行研究这些源代码,同时也看到无数的开源爱好者和技术专家加入Hadoop开源社区,贡献自己的力量,日复一日,乐此不疲。谈起大数据,不得不提Hadoop,如今其早已发展成为了大数据处理的事实标准。Hadoop诞生于2005年,其受到Google的两篇论文(GFS和MapReduce)的启发。起初,Hadoop只是用来支撑Nutch搜索引擎的项目,从2006年开始,Hadoop脱离了Nutch,成为了Apache的顶级项目,无论是在学术界还是工业界都得到了迅猛的发展。如今已是2016年了,Hadoop十周岁了,这十年期间围绕其核心组件(HDFS、MapReduce、Yarn)陆续出现了一批工具,用来丰富Hadoop生态圈,解决大数据各方面的问题,这其中就包括Apache Kylin。
ApacheKylin(麒麟)是由eBay 研发并贡献给开源社区的Hadoop上的分布式大规模联机分析(OLAP)平台,它提供Hadoop之上的SQL查询接口及多维分析能力以支持大规模数据,能够处理TB乃至PB级别的分析任务,能够在亚秒级查询巨大的Hive表,并支持高并发。Apache Kylin于2014年10月开源,并于当年11月成为Apache孵化器项目,是eBay第一个贡献给Apache软件基金会的项目,也是第一个由中国团队完整贡献到Apache的项目,在这里对Apache Kylin的中国团队表示感谢,感谢贡献如此出色的大数据分析平台。从去年开始接触Apache Kylin,我感觉很亲切,也很惊喜。当前研究的版本为0.7.1,也就是Kylin加入Apache孵化器项目后的第一个Apache发行版本,虽然当时的Kylin存在一些问题,但是其基于Hadoop设计的框架还是很有创意和特色的。经过一年多的发展,截至目前,Apache Kylin的版本已经发展到1.5.3,并且从1.5版本开始,Apache Kylin进行了重构,支持可扩展架构,支持更多的数据源、构建引擎和存储引擎,构建算法不断优化,支持与更多的可视化工具集成等。如今,Apache Kylin已被应用在eBay、Exponential、京东、美团、明略数据、网易及其他公司。越来越多的大数据团队开始选择Apache Kylin作为公司大数据分析平台的组成部分,满足其海量数据的多维指标实时查询分析。
通过很多社区的交流分享,我发现不少朋友对Apache Kylin没有一个整体的认识,在使用过程中出现各种各样的问题,打击自信心,他们急切希望能有一本全面介绍Apache Kylin的书籍。因为我经常在博客和社区分享Apache Kylin实战方面的一些经验,所以很多朋友鼓励我能够写一本比较全面介绍Apache Kylin的书籍,帮助更多的爱好者更好地加入Apache Kylin的社区,并在生产环境中进行实践。刚开始比较犹豫,毕竟写书需要花费大量的时间和精力,而且要对读者负责,容不得半点马虎。后来有社区的几个朋友给我打电话劝说,以及清华大学出版社的夏毓彦编辑一再鼓励,还有家人的支持,我就下定决心写这本书,目的只有一个,就是希望读者能够通过这本书,对Apache Kylin有一个完整的认识,掌握各方面的技能,并最终应用在自己公司的生产环境中。
本书内容
这是一本全面介绍Apache Kylin的书籍,包括环境搭建、案例实战演示、源码分析、Cube优化等,此外还会涉及数据仓库、数据模型、OLAP、数据立方体等方面的知识。通过本书系统性学习和实战操作,朋友们将能够达到基于Apache Kylin搭建企业级大数据分析平台,并熟练掌握使用Apache Kylin多维度地分析海量数据,最终通过可视化工具展示结果。受众人群本书适合从事Hadoop、HBase、Hive和Kylin等方面工作的人员参考阅读,最好能掌握一点OLAP、数据立方体等数据仓库方面的知识。但是我相信这本书也适合任何想从事大数据方面工作的程序员和架构师。代码规范和下载本书中会涉及大量的Linux Shell命令,这些命令都是在CentOS操作系统上执行成功的,对于其他的一些Linux系统也同样适用,如有不适用的,可以查阅资料,修改命令以符合对应的操作系统。要下载本书章节中的样例代码,请到http:github.comjiangshouzhuang下载。
读者服务
由于本人的写作能力有限,可能有些章节内容考虑并不全面,或者版本升级导致某些章节部分内容不是最新的。为了更好地为读者服务,我特意建立了一个QQ群:118152802,读者有关本书的任何问题,我都会及时给朋友们答复,谢谢支持。致谢这本书的面世,得到了很多朋友的鼎力相助,在这里感谢所有帮助我完成这本书的人。感谢公司的同事们,特别感谢项同德和万文兵两位项目经理给予的支持和鼓励,感谢施健健给予的技术支持和帮助。感谢CSDN和cnblogs博客中优秀的文章给予的技术支持。感谢清华大学出版社所有为本书的出版和发行付出了辛勤劳动的人们。最后,我要感谢我的家人,给予我的不懈支持。感谢父母帮我们照顾调皮捣蛋的宝宝;感谢妻子一如既往地照顾我的生活,给予我充足的时间用来写作。没有家人的支持和照顾,我是不可能完成这本书。
作者
2016年10月
第 4 章? 搭建CDH大数据平台 ?
CDH(Cloudera''s Distribution, including Apache Hadoop),是Hadoop众多分支中的一种,由Cloudera维护,基于稳定版本的Apache Hadoop构建,并集成了很多补丁,可直接用于生产环境。
CM(全称Cloudera Manager)则是为了便于在集群中进行Hadoop等大数据处理相关的服务安装和监控管理的组件,对集群中主机、Hadoop、Hive、Spark等服务的安装配置管理做了极大简化。
CM部署包括如下的软件安装:
? Oracle JDK安装。
? Cloudera Manager Server和Agent包安装。
? 存储相关元数据的数据库安装。
? CDH和管理服务的软件包安装。
Cloudera官方共给出了3种安装方式:
? 第一种方法必须要求所有机器都能连网。
? 第二种方法下载很多包。
? 第三种方法对系统侵入性最小,最大优点可实现全离线安装,而且重装什么的都非常方便。后期的集群统一升级也非常好。这也是我之所以选择离线安装的原因。
在安装部署CM和CDH之前,说明几点:
(1)由于我们的生产环境的集群节点比较多,这里为了方便演示,我们搭建了一个只有4个节点CDH集群,没有搭建ResourceManager的主备,以及没有HDFS的HA等,如果需要的话,可以通过CM进行动态扩展。
(2)我们的实际环境CM和CDH版本已经从5.6.0升级为5.7.0,为了方便朋友部署CDH 5.7.0版本,我们本章都是基于5.7.0版本部署的集群环境,但是截图都是5.6.0版本的(请朋友们谅解),这两个版本的部署界面和安装步骤都没什么变化,具体情况,朋友安装过程中可以进行参考。
(3)后续章节中部署的Kylin集群环境都是基于CDH 5.7.0环境来搭建大数据分析平台。
4.1 系统环境和安装包
4.1.1 系统环境
主机环境:
10.20.22.202 SZB-L0020040
10.20.22.204 SZB-L0020041
10.20.22.209 SZB-L0020042
10.20.22.210 SZB-L0020043
操作系统:CentOS 6.7Final x64。
CM和CDH的版本号:5.7.0。
组件规划(根据自己的实际情况,进行组件规划),如表4-1所示。
表4-1
IP地址 主机名 角色
10.20.22.202 SZB-L0020040 CM管理组件
10.20.22.204 SZB-L0020041 NameNode
ResourceManager
HBase Master
Impala StateStore
Impala Catalog Server
Hive HiveServer2
Hive Metastore Server
ZooKeeper Server
10.20.22.209 SZB-L0020042 DataNode
ZooKeeper Server
NodeManager
HBase RegionServer
Impala Daemon
10.20.22.210 SZB-L0020043 DataNode
ZooKeeper Server
NodeManager
HBase RegionServer
Impala Daemon
CDH集成的组件比较多,比如Spark、Oozie、Solr、Hue等,根据自己的要求动态扩容。同时每个节点部署的组件不宜过多,根据组件的CPU和内存占用,对磁盘读写、网络带宽等进行合理规划。
4.1.2 安装包的下载
1. 安装说明
官方参考文档(第三种安装方式:手工离线安装方式):
http:www.cloudera.comdocumentationenterpriselatesttopicscm_ig_install_path_c.html
2. 相关包的下载地址
Cloudera Manager下载地址:
http:archive-primary.cloudera.comcm5cm5cloudera-manager-el6-cm5.7.0_x86_64.tar.gz
CDH安装包地址:http:archive.cloudera.comcdh5parcels5.7.0,由于我们的操作系统为CentOS 6.7,需要下载以下文件:
CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel
CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel.sha1
manifest.json
CDH 5.6.x支持的JDK版本如表4-2所示:
表4-2
最小支持的版本号 推荐的版本号 说明
1.7.0_55 1.7.0_67,1.7.0_75,1.7.0_80 无
1.8.0_31 1.8.0_60 不推荐使用JDK 1.8.0_40
本环境使用的JDK为:
http:archive.cloudera.comcm5redhat6x86_64cm5.7.0RPMSx86_64oracle-j2sdk1.7-1.7.0 update67-1.x86_64.rpm
当然如果需要,你也可以直接使用1.7.0_80版本的JDK。
CM和其支持的服务可以使用如下的数据库:
? MariaDB 5.5
? MySQL - 5.1、5.5和5.6
? PostgreSQL - 8.1、8.3、8.4、9.1、9.2、9.3和9.4
? Oracle 11gR2和12c
Cloudera Manager和CDH支持的Oracle JDBC Driver完整版本号为:使用JDK 6编译的Oracle 11.2.0.3.0 JDBC 4.0,这个驱动的Jar包名字为ojdbc6.jar。
这里使用的数据库为MySQL,具体包为:
mysql-advanced-5.6.21-linux-glibc2.5-x86_64.tar.gz
4.2 准备工作:系统环境搭建
本节讲解系统环境搭建,以下操作均用root用户操作。
4.2.1 网络配置CDH集群所有节点
vi etcsysconfignetwork修改hostname:
NETWORKING=yes
HOSTNAME=SZB-L0020040
HOSTNAME的值要设置为每个主机自己的主机名,你可以通过执行hostname的Linux命令获取主机名或者其他方式。
通过service network restart重启网络服务生效。
在每个节点的etchosts文件中加入集群的所有主机名和IP地址:
127.0.0.1 localhost
10.20.22.202 SZB-L0020040
10.20.22.204 SZB-L0020041
10.20.22.209 SZB-L0020042
10.20.22.210 SZB-L0020043
这里需要将每台机器的IP及主机名对应关系都写进去,本机的也要写进去,否则启动Agent的时候会提示hostname解析错误。
4.2.2 打通SSH,设置ssh无密码登录(所有节点)
创建主机之间的互相信任关系方式有好几种:
1. 第一种(假如是在root用户下面创建信任关系)
在节点(SZB-L0020040)上执行ssh-keygen -t rsa一路回车,生成无密码的密钥对。
将公钥添加到认证文件中:
cat ~.sshid_rsa.pub ~.sshauthorized_keys
并设置authorized_keys的访问权限:
chmod 600 ~.sshauthorized_keys
除了SZB-L0023776节点外,其他4个节点也执行上面的操作生成无密码的密钥对。
复制其他4个节点的公钥文件内容到SZB-L0020040节点的authorized_keys中。
将节点SZB-L0020040的authorized_keys复制到其他节点的root.ssh下面,这样CDH集群的所有节点之间都拥有其他节点的公钥,所以每个节点之间都可以免密码登录。
具体实战操作步骤说明如下。
(1)CDH集群的所有节点都执行如下Linux命令:
ssh-keygen -t rsa
(2)将所有节点(除了SZB-L0020040节点)生成的id_rsa.pub复制到某一个节点(SZB-L0020040)并重命名:
[root@SZB-L0020041 .ssh]# scp ~.sshid_rsa.pub SZB-L0020040:root.sshid_rsa_41.pub
[root@SZB-L0020042 .ssh]# scp ~.sshid_rsa.pub SZB-L0020040:root.sshid_rsa_42.pub
[root@SZB-L0020043 .ssh]# scp ~.sshid_rsa.pub SZB-L0020040:root.sshid_rsa_43.pub
(3)将(2)复制过来的每个节点的id_rsa.pub内容都追加到SZB-L0020040节点的authorized_keys文件中,具体Linux命令如下:
[root@SZB-L0020040 .ssh]# cat id_rsa_41.pub authorized_keys
[root@SZB-L0020040 .ssh]# cat id_rsa_42.pub authorized_keys
[root@SZB-L0020040 .ssh]# cat id_rsa_43.pub authorized_keys
(4)将SZB-L0023776节点的authorized_keys复制到所有节点:
[root@SZB-L0020040 .ssh]# scp authorized_keys SZB-L0020041:root.ssh
[root@SZB-L0020040 .ssh]# scp authorized_keys SZB-L0020042:root.ssh
[root@SZB-L0020040 .ssh]# scp authorized_keys SZB-L0020043:root.ssh
到此所有节点都可以免密码相互登录了。
2. 第二种(假如是在root用户下面创建信任关系)
我们使用ssh-copy-id命令,将本节点的公钥自动复制到指定的节点的authorized_keys文件中,省去了自己手工复制公钥的过程了。
具体的操作如下:
(1)在CDH集群的每一个节点执行如下命令:
ssh-keygen -t rsa
一路回车,生成无密码的密钥对。
(2)如果从SZB-L0020040节点免密码登录到SZB-L0020041节点,则执行如下命令:
[root@SZB-L0020040 .ssh]# ssh-copy-id SZB-L0020041
这个命令执行后会提示输入SZB-L0020041的root用户密码。
如果从SZB-L0020041节点免密码登录到SZB-L0020040节点,则执行如下命令:
[root@SZB-L0020041 .ssh]# ssh-copy-id SZB-L0020040
这个命令执行后会提示输入SZB-L0020040的root用户密码。
(3)测试
从SZB-L0020040登录到SZB-L0020041:
[root@SZB-L0020040 ~]# ssh SZB-L0020041
[root@SZB-L0020041 ~]#
从SZB-L0020041登录到SZB-L0020040:
[root@SZB-L0020041 ~]# ssh SZB-L0020040
[root@SZB-L0020040~]#
(4)其他节点采用上面的步骤进行操作,这里就省略掉了。
3. 安装Oracle的Java(所有节点)
CentOS一般默认自带OpenJDK,不过运行CDH5需要使用Oracle的JDK,需要Java 7的支持。
卸载自带的OpenJdk,使用rpm -qa | grep java查询java相关的包,使用rpm -e --nodeps 包名卸载。示例如下(显示openjdk版本有可能不一样):
# rpm -qa | grep java
java-1.6.0-openjdk-1.6.0.0-1.21.b17.el6.x86_64
# rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.21.b17.el6.x86_64
我们可以去Oracle的官网下载JDK,这里我是直接从Cloudera上面获取,下载地址为:
http:archive.cloudera.comcm5redhat6x86_64cm5.7.0RPMSx86_64oracle-j2sdk1.7-1.7.0 update67-1.x86_64.rpm
执行安装操作:
# rpm -ivh oracle-j2sdk1.7-1.7.0 update67-1.x86_64.rpm
安装后的目录如下:
# cd usrjava
# ls
jdk1.7.0_67-cloudera
创建软链接:
# ln -s jdk1.7.0_67-cloudera latest
# ln -s usrjavalatest default
再次查看:
# ls -l
lrwxrwxrwx 1 root root 16 Apr 7 09:34 default - usrjavalatest
drwxr-xr-x 8 root root 4096 Apr 8 11:09 jdk1.7.0_67-cloudera
lrwxrwxrwx 1 root root 30 Apr 7 09:34 latest - usrjavajdk1.7.0_67-cloudera
配置Java的环境变量,添加如下内容到etcprofile文件的末尾:
export JAVA_HOME=usrjavadefault
export PATH=$JAVA_HOMEbin:$PATH
export CLASSPATH=.:$JAVA_HOMElibdt.jar:$JAVA_HOMElibtools.jar
查看目前系统的JDK版本号:
# java -version
java version "1.7.0_67"
JavaTM SE Runtime Environment build 1.7.0_67-b01
Java HotSpotTM 64-Bit Server VM build 24.65-b04, mixed mode
4. 安装配置MySQLSZB-L0020040,SZB-L0020041
SZB-L0020040存储CM监控等元数据,SZB-L0020041存储Hive元数据。
这里只演示在SZB-L0020041部署MySQL数据库的步骤,SZB-L0020040同理。
(1)从Oracle官网上下载MySQL的安装包放到usrlocal目录下,解压缩和创建日志目录。
MySQL的安装目录根据实际情况,决定部署在什么地方。
# pwd
usrlocal
解压缩:
# tar -zxvf mysql-advanced-5.6.21-linux-glibc2.5-x86_64.tar.gz
设置软链接:
# ln -s mysql-advanced-5.6.21-linux-glibc2.5-x86_64 mysql
创建日志目录:
#cd mysql
# mkdir logs
(2)生成my.cnf配置文件。
# cp mysqlsupport-filesmy-default.cnf etcmy.cnf
配置my.cnf内容为:
[mysqld]
transaction-isolation = READ-COMMITTED
# Disabling symbolic-links is recommended to prevent assorted security risks;
# to do so, uncomment this line:
# symbolic-links = 0
key_buffer_size = 32M
max_allowed_packet = 32M
thread_stack = 256K
thread_cache_size = 64
query_cache_limit = 8M
query_cache_size = 64M
query_cache_type = 1
max_connections = 550
#expire_logs_days = 10
#max_binlog_size = 100M
#log_bin should be on a disk with enough free space. Replace ''varlibmysqlmysql_binary_log'' with an appropriate path for your system
#and chown the specified folder to the mysql user.
log_bin=usrlocalmysqllogsmysql_binary_log
# For MySQL version 5.1.8 or later. Comment out binlog_format for older versions.
binlog_format = mixed
read_buffer_size = 2M
read_rnd_buffer_size = 16M
sort_buffer_size = 8M
join_buffer_size = 8M
# InnoDB settings
innodb_file_per_table = 1
innodb_flush_log_at_trx_commit = 2
innodb_log_buffer_size = 64M
innodb_buffer_pool_size = 4G
innodb_thread_concurrency = 8
innodb_flush_method = O_DIRECT
innodb_log_file_size = 512M
explicit_defaults_for_timestamp
[mysqld_safe]
log-error=usrlocalmysqllogsmysqld.log
pid-file=usrlocalmysqldatamysqld.pid
sql_mode=STRICT_ALL_TABLES
(3)正式创建数据库。
# pwd
usrlocalmysql
# scriptsmysql_install_db --user=root
(4)修改etcprofile文件,添加MySQL环境变量。
export MYSQL_HOME=usrlocalmysql
export PATH=$MYSQL_HOMEbin:$PATH
使环境变量生效:
# source etcprofile
(5)启动数据库。
mysqld_safe --user=root &
(6)修改MySQL数据库的root密码。
# mysqladmin -u root password ''xxxxxx''
# mysqladmin -u root -h SZB-L0020041 password ''xxxxxx''
(7)删除test 数据库和匿名用户等,尤其对于生产环境更要操作。
# mysql_secure_installation
按照提示一步一步操作,此处略。
(8)安装MySQL的JDBC驱动。
对于MySQL 5.6版本的数据库需要5.1.26或更高版本的JDBC驱动。
下载地址:http:dev.mysql.comdownloadsconnectorj5.1.html。
当然我们也可以在Linux环境下,直接使用wget下载:
# wget http:dev.mysql.comgetDownloadsConnector-Jmysql-connector-java-5.1.38.tar.gz
解压缩:
# tar -zxvf mysql-connector-java-5.1.38.tar.gz
将JDBC驱动复制到指定的位置:
# cp mysql-connector-java-5.1.38mysql-connector-java-5.1.38-bin.jar usrsharejavamysql-connector-java.jar
(9)为CM管理的各个组件创建对应的数据库、用户等,如表4-3所示。
表4-3
Role Database User Password
CM Server scm scm xxxxxx
Activity Monitor amon amon xxxxxx
Reports Manager rman rman xxxxxx
HiveMetastore Server metastore hive xxxxxx
Sentry Server sentry sentry xxxxxx
Cloudera Navigator Audit Server nav nav xxxxxx
Cloudera Navigator Metadata Server navms navms xxxxxx
创建metastore数据库和用户,其他用户类似:
mysql create database metastore DEFAULT CHARACTER SET latin1;
mysql grant all on metastore.* TO ''hive''@''%'' IDENTIFIED BY ''xxxxxx'';
mysql flush privileges;
具体详细信息请参考MySQL官方配置文档:
http:www.cloudera.comdocumentationenterpriselatesttopicscm_ig_mysql.html?scroll=cmig_topic_5_5_2_unique_1
5. 关闭防火墙和SELinux
需要在所有的节点上执行,因为涉及的端口太多了,临时关闭防火墙是为了安装起来更方便,安装完毕后可以根据需要设置防火墙策略,保证集群安全。
关闭防火墙:
service iptables stop (临时关闭)
chkconfig iptables off(重启后生效)
关闭SELINUX:
setenforce 0 (临时生效)
修改 etcselinuxconfig 下的SELINUX=disabled(重启后永久生效)。
6. 所有节点配置NTP服务
要求CDH集群的每个节点时间保持同步,请配置集群的NTP服务。
7. 配置操作系统内核参数
(1)参数1:kernel.mm.redhat_transparent_hugepage.defrag
该参数默认值为always,这可能带来CPU利用率过高的问题,需要将其设置为never,使用如下的linux命令:
# echo never syskernelmmredhat_transparent_hugepagedefrag
为了保证重启生效,可以把这个命令写到etcrc.local文件中,保证每次开机都能调用。
(2)参数2:vm.swappiness
该参数默认值为60,这里将其设置为0,让操作系统尽可能不使用交互分区,有助于提高集群的性能。将该配置参数写入配置文件etcsysctl.conf,可以执行下面的命令:
# echo "vm.swappiness = 0" etcsysctl.conf
运行如下命令使配置参数生效:
# sysctl -p
4.3 正式安装CDH:准备工作
1. 安装Cloudera Manager Server 和Agent
首先在主节点(SZB-L0020040)解压安装CM。
将下载的CM包放在opt目录中解压:
# cd opt
# tar xzf cloudera-manager*.tar.gz
CM Agent配置
修改optcm-5.7.0etccloudera-scm-agentconfig.ini中的server_host为主节点的主机名和端口号:
# CM server的主机名
server_host=SZB-L0020040
# CM server监听的端口号
server_port=7182
同步主节点(SZB-L0020040)的Agent到其他节点:
# scp -r optcm-5.7.0 SZB-L0020041:opt
# scp -r optcm-5.7.0 SZB-L0020042:opt
# scp -r optcm-5.7.0 SZB-L0020043:opt
2. 所有节点都创建cloudera-scm用户
# useradd --system --home=optcm-5.7.0runcloudera-scm-server --no-create-home --shell=binfalse --comment "Cloudera SCM User" cloudera-scm
3. 为Cloudera Manager 5建立数据库(选择存放CM元数据的MySQL数据库)
首先需要去MySql的官网下载JDBC驱动,下载地址为:
http:dev.mysql.comdownloadsconnectorj
下载完成后,进行解压缩,找到mysql-connector-java-5.1.38-bin.jar文件并放到optcm-5.7.0sharecmflib中。
然后在主节点初始化CM 5的数据库。
在MySQL数据库中创建scm用户:
mysql grant all on scm.* TO ''scm''@''%'' IDENTIFIED BY ''xxxxxx'';
mysql flush privileges;
再执行创建scm数据库等操作:
# optcm-5.7.0sharecmfschemascm_prepare_database.sh mysql -hlocalhost -uroot pxxxxxx --scm-host SZB-L0020040 scm scm scm
4. 准备Parcels,用以安装CDH5
在CM Server上创建存放Parcels的目录并修改属主和属组:
# mkdir -p optclouderaparcel-repo
# chown cloudera-scm:cloudera-scm optclouderaparcel-repo
在集群的每个节点创建目录:
# mkdir -p optclouderaparcels
# chown cloudera-scm:cloudera-scm optclouderaparcels
如果CM5安装包解压缩就存在上面两个目录,那么就不需要创建此目录了。
将CDH5相关的Parcel包放到主节点的optclouderaparcel-repo目录中。
相关的文件如下:
CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel
CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel.sha1
manifest.json
最后,将CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel.sha1重命名为CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel.sha,这点必须注意,否则,系统会重新下载CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel文件。
5. CM相关启动脚本
通过optcm-5.7.0etcinit.dcloudera-scm-server start启动服务端。
通过optcm-5.7.0etcinit.dcloudera-scm-agent start启动Agent服务。
我们启动的其实是个service脚本,需要停止服务将以上的start参数改为stop就可以了,重启是restart。
针对我们的环境,需要在SZB-L0020040主节点上启动Server和Agent,然后其余节点启动Agent服务。
4.4 正式安装CDH5:安装配置
4.4.1 CDH5的安装配置
Cloudera Manager Server和Agent都启动以后,就可以进行CDH5的安装配置了。这时我们可以通过浏览器访问主节点的7180端口测试一下了(由于CM Server的启动需要花点时间,这里可能要等待一会才能访问),默认的用户名和密码均为admin,如图4-1所示。
图4-1
输入用户名和密码后,单击Login进行登录,进入下一步骤,如图4-2所示。
图4-2
选中同意协议,并单击继续。可以看到,免费版本的CM5已经没有原来50个节点数量的限制了。我这里可以选用企业试用版,体验一些功能,如图4-3所示。
图4-3
继续单击Continue,进入下一步,如图4-4所示。
图4-4
感谢选择CM和CDH,列出CDH中集成的组件清单,单击继续。
各个Agent节点正常启动后,可以在当前管理的主机列表中看到对应的节点,选择要安装的节点。对于我们的集群环境,选择4个节点,单击继续,进入下一步,如图4-5所示。
图4-5
这一步出现了我们需要安装的CDH版本号,说明本地Parcel包配置无误,直接单击继续,进入下一步,如图4-6所示。
图4-6
如果配置本地Parcel包无误,那么图4-6中的Downloaded应该是瞬间就完成,然后就是耐心等待分配过程,解包过程和激活过程,一般10~20分钟,取决于内网网速。
这一步骤其实做了几个事情:
(1)从CM Server节点分发CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel到每个CM Agent节点。
(2)解压每个CM Agent下的CDH-5.7.0-1.cdh5.7.0.p0.45-el6.parcel包。
(3)激活每个CM Agent的CDH。
激活完成后的状态,如图4-7所示。
图4-7
我们单击继续,进入系统检查环节,如图4-8所示。
图4-8
如果你的环境检查有问题,根据提示修改后再次检查,直到所有问题消除为止。
接下来是选择安装服务,这里选择安装所有的服务的方式,如图4-9所示。
图4-9
选择好安装的服务组合后,进入服务配置环节,一般情况下保持默认就可以了(Cloudera Manager会根据机器的配置自动进行配置,如果需要特殊调整,自行进行设置就可以了),如图4-10~图4-12所示。
图4-10
图4-11
图4-12
然后单击继续,开始进行数据库方面的设置,如图4-13所示。
图4-13
配置好后,进行测试连接。检查通过后单击继续就可以进行下一步操作了。
下面是集群设置页面,根据实际情况配置,这里我只截图一小部分,如图4-14所示。
图4-14
下面我们正式进入安装各个服务的重要步骤了。
这里安装Hive的时候会报错,因为我们使用了MySQL作为Hive的元数据存储,Hive默认没有带MySQL的驱动,通过以下命令复制MySQL的驱动就可以了(所有Hive节点都执行此操作):
# cp optcm-5.7.0sharecmflibmysql-connector-java-5.1.38-bin.jar optclouderaparcelsCDH-5.7.0-1.cdh5.7.0.p0.45libhivelib
这里的optcm-5.7.0sharecmflibmysql-connector-java-5.1.38-bin.jar驱动包,是我们前面安装MySQL时放置的,如图4-15所示。
图4-15
服务的安装过程大约半小时内就可以完成。
安装完成后,就可以进入集群界面看一下集群的当前状况了。如果页面出现无法发出查询,对 Service Monitor 的请求超时的错误提示时,在确定各个组件安装没有问题的情况下,一般是因为服务器运行比较卡导致的,过一会刷新一下页面就好了。
根据经验,一般情况下安装完后此页面有很多告警和异常情况,需要根据提示逐项进行修改。图4-16是我们进行优化后的页面。
图4-16
到目前为止,我们基于CM部署的CDH大数据平台就搭建起来了。
4.4.2 对Hive、HBase执行简单操作
下面我们对Hive、HBase执行简单操作,确保Kylin依赖的环境没有问题。另外需要说明的是,我们后续会给Kylin单独部署一套HBase集群环境。
1. Hive简单操作
(1)创建数据库和表并导入本地数据,如图4-17所示。
图4-17
其中varlibhadoop-hdfshellokylin.txt是自己构造的数据文件,里面的每一行有两列,以竖线分隔。
(2)验证MapRduce
上面直接查表数据操作是不会提交MapReduce程序的,我们这里使用group by操作,执行MapReduce程序,如图4-18所示。
图4-18
根据执行过程,可以看出MapReduce程序有一个mapper和一个reducer操作。
2. HBase简单操作
(1)创建表kylin并插入一条记录,如图4-19所示。
图4-19
(2)查看表数据,总行数和表结构,如图4-20所示。
图4-20
好了,咱们就简单对Hive和HBase介绍到此,因为我们本书的重点是深入研究Kylin。
下一章我们将基于CDH来部署Kylin的大数据分析平台。
|
|