阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

Apache Kylin 安装部署之不完全指南

150次阅读
没有评论

共计 4240 个字符,预计需要花费 11 分钟才能阅读完成。

1. 引言

Apache Kylin(麒麟)是由 eBay 开源的分布式分析引擎,提供 Hadoop 之上的 SQL 查询接口及多维分析(OLAP)能力以支持超大规模数据。底层存储用的是 HBase,数据输入与 cube building 用的是 Hive,中间数据存储用的是 HDFS。搭建环境:

Kylin version = 1.2
Hive version = 0.13.1-cdh5.3.2
HBase version = 0.98.6+cdh5.3.2
Hadoop version = 2.5.0-cdh5.3.2

本文提供的是半分布式安装——HBase 环境只在本机搭建;已略去 Hadoop 环境搭建过程,将主要介绍 Hive、HBase、Kylin 的搭建步骤。

2. Hive 部署

解压包tar zxvf hive-0.13.1-cdh5.3.2.tar.gz,然后 mv 到指定目录mv hive-0.13.1-cdh5.3.2 <desc-dir>/,指定 HIVE_HOME,在.bashrc 中添加

export HIVE_HOME=/<desc-dir>/hive-0.13.1-cdh5.3.2/
export PATH=$PATH:$HIVE_HOME/bin:

source 后,可以输入 hive 命令进行表操作;但是还未配置 Hive 的元数据库。cd ${HIVE_HOME}/conf,创建配置文件cp hive-default.xml.template hive-site.xml,在 hive-site.xml 文件中配置 mysql 作为元数据库,需修改以下内容:

<property>
  <name>javax.jdo.option.ConnectionURL</name>
  <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
  <description>JDBC connect string for a JDBC metastore</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionDriverName</name>
  <value>com.mysql.jdbc.Driver</value>
  <description>Driver class name for a JDBC metastore</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionUserName</name>
  <value>hive</value>
  <description>username to use against metastore database</description>
</property>

<property>
  <name>javax.jdo.option.ConnectionPassword</name>
  <value>hive</value>
  <description>password to use against metastore database</description>
</property>

元数据库在 mysql 中的 database 为 hive,Driver 为com.mysql.jdbc.Driver,用户名与密码均为 hive;需在 mysql 中配置 Hive 元数据库:

mysql -u root -p

mysql> CREATE DATABASE hive;

-- 创建 hive 用户,并赋予访问 hive 数据库的权限
mysql> GRANT ALL PRIVILEGES ON hive.* TO 'hive'@'localhost' IDENTIFIED BY 'hive';
mysql> FLUSH PRIVILEGES;

-- 设置 binary log 的格式:mysql> set global binlog_format=MIXED;

此外还需要添加 mysql jdbc jar 包:

tar xvzf mysql-connector-java-5.1.37.tar.gz
mv mysql-connector-java-5.1.37/mysql-connector-java-5.1.37-bin.jar $HIVE_HOME/lib

Kylin 用 HCatalog 读取 Hive 表的,而 HCatalog 用 property hive.metastore.uris 创建 HiveMetaStoreClient 得到元信息。因此,我们还需修改 hive-site.xml:

<property>
  <name>hive.metastore.uris</name>
  <value>thrift://localhost:9083</value>
  <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
</property>

开启 metastore 服务:

nohup hive --service metastore -p 9083 &

3. HBase 部署

与 Hive 搭建步骤相类似,解压文件 mv 到指定目录,然后在.bashrc 中配置环境变量:

tar zxvf hbase-0.98.6-cdh5.3.2.tar.gz
mv hbase-0.98.6-cdh5.3.2 <desc-dir>/
--.bashrc
export HBASE_HOME=/<desc-dir>//hbase-0.98.6-cdh5.3.2/
export PATH=$PATH:$HIVE_HOME/bin:$HBASE_HOME/bin

以 root 权限开启 HBase 服务:

sudo start-hbase.sh

4. Kylin 部署

解压文件 mv 到指定目录,然后在.bashrc 中配置环境变量KYLIN_HOME。此外,还需要修改 Kylin 的部分配置信息,cd ${KYLIN_HOME}/conf 修改kylin.properites:

# 部署服务器 ip,便于其他机器访问
kylin.rest.servers=ip:7070

#kylin 在 hdfs 存储路径
kylin.hdfs.working.dir=<hdfs-dir>

# 依赖 jar 包地址
kylin.job.mr.lib.dir=<lib hdfs-dir>

在每一台机器上可能 Hive 的部署目录不一致,导致诸如此类 exception(因此需要配置 kylin.job.mr.lib.dir):

java.lang.RuntimeException: java.lang.ClassNotFoundException: Class org.apache.hive.hcatalog.mapreduce.HCatInputFormat not found
    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2199)
    at org.apache.hadoop.mapreduce.task.JobContextImpl.getInputFormatClass(JobContextImpl.java:184)
...

kylin_job_conf.xml 配置队列权限:

<property>
    <name>mapreduce.job.queuename</name>
    <value>...</value>
    <description>the queue name</description>
</property>

(最新版本 1.5.1 同时需要在 hive-site.xml 添加)配置完成后,运行 ./bin/find-hive-dependency.sh 看 Hive 环境是否配置正确,可能需要手动设置 HCAT_HOME;./bin/kylin.sh start即可开启 kylin 服务了。


番外

Kylin 如何添加登录用户

官方 doc 给出解决思路:Kylin 是采用 Spring security framework 做用户认证的,需要配置 ${KYLIN_HOME}/tomcat/webapps/kylin/WEB-INF/classes/kylinSecurity.xml 的 sandbox,testing 部分

<beans profile="sandbox,testing">
    <scr:authentication-manager alias="authenticationManager">
        <scr:authentication-provider>
            <scr:user-service>
                ...
                <scr:user name="ADMIN" password="$2a$10$o3ktIWsGYxXNuUWQiYlZXOW5hWcqyNAFQsSSCSEWoC/BRVMAUjL32" authorities="ROLE_MODELER, ROLE_ANALYST, ROLE_ADMIN"/>
                <scr:user name="xxx" password="xxx" authorities="ROLE_MODELER, ROLE_ANALYST, ROLE_ADMIN"/>
                ...

password 需要 spring 加密:

<dependency>
    <groupId>org.springframework.security</groupId>
    <artifactId>spring-security-core</artifactId>
    <version>4.0.0.RELEASE</version>
</dependency>
String password = "123456"; 
org.springframework.security.crypto.password.PasswordEncoder encoder
   = new org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder();
String encodedPassword = encoder.encode(password);  
System.out.print(encodedPassword);

本文永久更新链接地址:http://www.linuxidc.com/Linux/2017-06/144923.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计4240字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中