Shark-0.9.0安装配置运行实践

简介:
Shark(Hive on Spark)是UC Lab为Spark设计并开源的一款数据仓库系统,提供了分布式SQL查询引擎,它能够完全兼容Hive。首先,我们通过下面的图,看一下Shark与Hive的关系(http://shark.cs.berkeley.edu/img/shark-hive-integration.png):
以前我们使用Hive分析HDFS中数据时,通过将HQL翻译成MapReduce作业(Job)在Hadoop集群上运行;而使用Shark可以像使用Hive一样容易,如HQL、Metastore、序列化格式、UDF等Shark都支持,不同的是Shark运行在Spark集群上执行计算,基于Spark系统所使用的RDD模型。官方文档给出的性能方面的数据是,使用Shark查询分析HDFS数据,能比Hive快30多倍,如图所示(http://shark.cs.berkeley.edu/img/perf.png):

下面,我们通过安装配置Shark来简单地体验一下。

准备软件包

  • jdk-7u25-linux-x64.tar.gz
  • scala-2.10.3.tgz
  • apache-maven-3.2.1-bin.tar.gz
  • hadoop-1.2.1.tar.gz
  • spark-0.9.0-incubating-bin-hadoop1.tgz
  • hive-0.11-shark-0.9.0.tar.gz

环境变量配置

针对上述准备软件包,我们需要安装配置好JDK、Scala环境,保证Hadoop集群能够正常启动运行,同时Hive也能够执行正确地查询分析工作

01 export JAVA_HOME=/usr/java/jdk1.7.0_25/
02 export PATH=$PATH:$JAVA_HOME/bin
03 export CLASSPATH=$JAVA_HOME/lib/*.jar:$JAVA_HOME/jre/lib/*.jar
04
05 export SCALA_HOME=/usr/scala/scala-2.10.3
06 export PATH=$PATH:$SCALA_HOME/bin
07
08 export MAVEN_HOME=/home/shirdrn/cloud/programs/apache-maven-3.2.1
09 export PATH=$PATH:$MAVEN_HOME/bin
10
11 export HADOOP_HOME=/home/shirdrn/cloud/programs/hadoop-1.2.1
12 export PATH=$PATH:$HADOOP_HOME/bin
13 export HADOOP_LOG_DIR=/home/shirdrn/cloud/storage/hadoop-1.2.1/logs
14
15 export HIVE_HOME=/home/shirdrn/cloud/programs/hive-0.11-shark-0.9.0
16 export PATH=$PATH:$HIVE_HOME/bin
17
18 export SPARK_HOME=/home/shirdrn/cloud/programs/spark-0.9.0-incubating-bin-hadoop1
19 export PATH=$PATH:$SPARK_HOME/bin
20
21 export SHARK_HOME=/home/shirdrn/cloud/programs/shark-0.9.0
22 export PATH=$PATH:$SHARK_HOME/bin

Hive安装配置

这里,我们使用一个用来与Shark进行整合而开发的版本的Hive软件包,可以在这里https://github.com/amplab/hive/releases选择对应的版本。
例如,在主节点m1上准备Hive的软件包:

1 wget https://github.com/amplab/hive/archive/v0.11-shark-0.9.0.tar.gz
2 mv v0.11-shark-0.9.0 hive-0.11-shark-0.9.0.tar.gz
3 tar xvzf hive-0.11-shark-0.9.0.tar.gz

然后修改Hive的配置文件,指定在HDFS上的目录即可,如下所示:

01 <?xml version="1.0"?>
02 <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
03
04 <configuration>
05 <property>
06 <name>hive.metastore.warehouse.dir</name>
07 <value>/hive</value>
08 <description>location of default database for the warehouse</description>
09 </property>
10 </configuration>

简单使用这样配置即可。

安装配置Shark

由于我之前先安装配置了Spark-0.9.0,没有找到对应版本的Shark(只找到了Shark-0.8.1的编译包),所以直接从github下载Shark-0.9.0分支的源码,使用sbt进行构建,执行如下命令行:

1 git clone https://github.com/amplab/shark.git -b branch-0.9.0 shark-0.9.0
2 cd shark-0.9.0
3 sbt/sbt package

上面最后一步使用sbt构建的过程可能需要下载很多依赖包,等待的时间比较长。构建成功之后,可以修改Shark的配置文件:

1 cd shark-0.9.0/conf
2 mv shark-env.sh.template shark-env.sh
3 mv log4j.properties.template log4j.properties

然后修改shark-env.sh,修改内容如下所示:

1 export SHARK_MASTER_MEM=512m
2 export SPARK_MEM=512m
3 export SCALA_HOME=/usr/scala/scala-2.10.3
4 export HIVE_CONF_DIR=/home/shirdrn/cloud/programs/hive-0.11-shark-0.9.0/conf

编译构建并配置Shark,就可以启动Shark Shell,类似Hive Shell一样,执行HQL。

验证Shark

首先,需要启动Hadoop和Spark集群。
启动Shark可以执行如下明命令:

1 bin/shark

这样就进入了Shark的Shell环境,类似于Hive。现在,我们可以通过如下一个简单的例子来验证Shark,如下所示:

1 CREATE DATABASE user_db;
2 CREATE TABLE users (login STRING, password STRING, id INT, group INT, user STRING, home STRING, cmd STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY ':' LINES TERMINATED BY '\n';
3 LOAD DATA LOCAL INPATH '/etc/passwd' INTO TABLE users;

对应于本地Unix系统的/etc/passwd文件,我们创建了一个数据库user_db,然后在该数据库中创建了一个users表,最后将本地/etc/passwd文件上传到HDFS,作为Hive表数据。
执行查询:

1 SELECT * FROM users;

验证结果示例如下:

01 shark> SELECT * FROM users;
02 223.128: [Full GC 99467K->25184K(506816K), 0.1482850 secs]
03 OK
04 root x 0 0 root /root /bin/bash
05 bin x 1 1 bin /bin /sbin/nologin
06 daemon x 2 2 daemon /sbin /sbin/nologin
07 adm x 3 4 adm /var/adm /sbin/nologin
08 lp x 4 7 lp /var/spool/lpd /sbin/nologin
09 sync x 5 0 sync /sbin /bin/sync
10 shutdown x 6 0 shutdown /sbin /sbin/shutdown
11 halt x 7 0 halt /sbin /sbin/halt
12 mail x 8 12 mail /var/spool/mail /sbin/nologin
13 uucp x 10 14 uucp /var/spool/uucp /sbin/nologin
14 operator x 11 0 operator /root /sbin/nologin
15 games x 12 100 games /usr/games /sbin/nologin
16 gopher x 13 30 gopher /var/gopher /sbin/nologin
17 ftp x 14 50 FTP User /var/ftp /sbin/nologin
18 nobody x 99 99 Nobody / /sbin/nologin
19 dbus x 81 81 System message bus / /sbin/nologin
20 usbmuxd x 113 113 usbmuxd user / /sbin/nologin
21 avahi-autoipd x 170 170 Avahi IPv4LL Stack /var/lib/avahi-autoipd /sbin/nologin
22 vcsa x 69 69 virtual console memory owner /dev /sbin/nologin
23 rtkit x 499 497 RealtimeKit /proc /sbin/nologin
24 abrt x 173 173 /etc/abrt /sbin/nologin
25 haldaemon x 68 68 HAL daemon / /sbin/nologin
26 saslauth x 498 76 "Saslauthd user" /var/empty/saslauth /sbin/nologin
27 postfix x 89 89 /var/spool/postfix /sbin/nologin
28 ntp x 38 38 /etc/ntp /sbin/nologin
29 apache x 48 48 Apache /var/www /sbin/nologin
30 avahi x 70 70 Avahi mDNS/DNS-SD Stack /var/run/avahi-daemon /sbin/nologin
31 pulse x 497 496 PulseAudio System Daemon /var/run/pulse /sbin/nologin
32 gdm x 42 42 /var/lib/gdm /sbin/nologin
33 sshd x 74 74 Privilege-separated SSH /var/empty/sshd /sbin/nologin
34 tcpdump x 72 72 / /sbin/nologin
35 shirdrn x 500 500 Jeff Stone /home/shirdrn /bin/bash
36 mysql x 27 27 MySQL Server /var/lib/mysql /bin/bash
37 Time taken: 2.742 seconds

可以在HDFS上查询Hive对应的数据存储位置信息:

1 hadoop fs -lsr /hive

示例如下所示:

1 [shirdrn@m1 hive-0.11-shark-0.9.0]$ hadoop fs -lsr /hive
2 drwxr-xr-x - shirdrn supergroup 0 2014-03-16 06:06 /hive/user_db.db
3 drwxr-xr-x - shirdrn supergroup 0 2014-03-16 06:07 /hive/user_db.db/users
4 -rw-r--r-- 3 shirdrn supergroup 1567 2014-03-16 06:07 /hive/user_db.db/users/passwd
目录
相关文章
|
3月前
|
分布式计算 资源调度 大数据
大数据-110 Flink 安装部署 下载解压配置 Standalone模式启动 打包依赖(一)
大数据-110 Flink 安装部署 下载解压配置 Standalone模式启动 打包依赖(一)
118 0
|
3月前
|
存储 大数据 Apache
大数据-146 Apache Kudu 安装运行 Dockerfile 模拟集群 启动测试
大数据-146 Apache Kudu 安装运行 Dockerfile 模拟集群 启动测试
33 0
|
8月前
|
分布式计算 Hadoop Scala
Spark【环境搭建 01】spark-3.0.0-without 单机版(安装+配置+测试案例)
【4月更文挑战第13天】Spark【环境搭建 01】spark-3.0.0-without 单机版(安装+配置+测试案例)
322 0
|
8月前
|
Java Linux 网络安全
【极数系列】Flink环境搭建&Linux版本 (03)
【极数系列】Flink环境搭建&Linux版本 (03)
134 2
|
8月前
|
Java Shell 分布式数据库
Pinpoint【部署 01】JDK\HBase\Pinpoint Collector+Web 最新版 2.3.3 安装配置运行验证及脚本文件分享(避坑指南捷径指北)20230228
Pinpoint【部署 01】JDK\HBase\Pinpoint Collector+Web 最新版 2.3.3 安装配置运行验证及脚本文件分享(避坑指南捷径指北)20230228
470 0
|
存储 分布式计算 Hadoop
伪分布式安装部署(运行MapReduce程序)
伪分布式安装部署(运行MapReduce程序)
208 0
|
SQL 分布式计算 资源调度
CDH+Kylin三部曲之二:部署和设置
上一篇文章完成了所有准备工作,现在可以来部署和启动Kylin了
214 5
CDH+Kylin三部曲之二:部署和设置
|
分布式计算 Hadoop Linux
Hadoop运行环境搭建(开发重点)、VMware 安装
推荐的软件为VMware,VMware可以使用户在一台计算机上同时运行多个操作系统,还可以像Windows应用程序一样来回切换。用户可以如同操作真实安装的系统一样操作虚拟机系统,甚至可以在一台计算机上将几个虚拟机系统连接为一个局域网或者连接到互联网。一台电脑本身是可以装多个操作系统的,但是做不到多个操作系统切换自如,所以我们需要一款软件帮助我们达到这个目的,不然数仓项目搭建不起来。然后点击安装即可,因为我有VMware,所以他提醒我升级,你们那边显示的是安装,然后等待安装成功即可。点我接受,然后点下一步。.
Hadoop运行环境搭建(开发重点)、VMware 安装
|
分布式计算 Ubuntu Hadoop
大数据基础系列 4:伪分布式 Hadoop 在 Ubuntu 上的安装流程完整步骤及易错点分析
大数据基础系列 4:伪分布式 Hadoop 在 Ubuntu 上的安装流程完整步骤及易错点分析
310 0
大数据基础系列 4:伪分布式 Hadoop 在 Ubuntu 上的安装流程完整步骤及易错点分析
|
分布式计算 Java Hadoop
Flink 安装部署、环境配置及运行应用程序(一)| 学习笔记
快速学习 Flink 安装部署、环境配置及运行应用程序。