Spark2.0.1 on yarn with hue 集群安装部署(六)hue+hive+sparksql

hue+hive+sparksql

1、 配置hue

cd /bigdata/hue/desktop/conf
vim /hue.ini

配置hive与hue整合,找到[beeswax]修改内容如下:

[beeswax]

  # Host where HiveServer2 is running.
  # If Kerberos security is enabled, use fully-qualified domain name (FQDN).
  hive_server_host=bigdata1

  # Port where HiveServer2 Thrift server runs on.
  hive_server_port=10000

  # Hive configuration directory, where hive-site.xml is located
  hive_conf_dir=/bigdata/hive/conf

  # Timeout in seconds for thrift calls to Hive service
  server_conn_timeout=120

注:hive_server_host=bigdata1 #指向运行hue的主机
hive_server_port=10000 #端口号
hive_conf_dir=/bigdata/hive/conf #执行hive配置文件的路径

2、启动hue

/bigdata/hue/build/env/bin/supervisor

3、启动hive的matestore服务

hive --service metastore

4、 启动sparkSql Server

cd /bigdata/spark/sbin
./start-thriftserver.sh --master yarn --deploy-mode client

使用以下命令查看是否启动成功(注:启动过程比较长,需要等待数秒才能查看到结果):
netstat -nltp | grep 10000
这里写图片描述

启动sparkSql server是为了支持sql查询,否则点击install spark出现以下错误。
这里写图片描述

当开启sparkSql Server服务时,点击install spark会向default数据库中插入四张表。

5、测试sparksql

1)、打开notebook

如果notebook打不开,首先查询后台日志,查看是否报错,如果确定没有报错。则可能是前台原因导致,首先排查浏览器是否兼容,可更换不同浏览器进行测试。如果网速过慢也可能导致notebook无法正常打开,此时可以打开开发者工具查看是否有js脚本或其他什么资源加载超时的,刚搭建好的时候就出现网速过慢足足加载了1分多钟还未加载完成,导致部分js加载超时,无法正常显示,如果是网速原因,多刷新下网页就出来了。
这里写图片描述

2)、左侧导航栏测试

这里写图片描述

左侧侧边栏无法加载数据库和数据库中的表,查看后台日志。
这里写图片描述

16/11/01 18:17:20 INFO Query: Reading in results for query “org.datanucleus.store.rdbms.query.SQLQuery@0” since the connection used is closing
16/11/01 18:17:20 INFO MetaStoreDirectSql: Using direct SQL, underlying DB is DERBY

这两句表示使用derby数据库。主要因为thriftserver运行时,客户端访问直接访问derby数据库,所以只看到一个default数据库,且并未显示那4张表,而不是直接访问mysql中的matestore数据库中的数据。
该问题可能是spark存在的一个bug未解决,具体查看如下:
具体查看:https://issues.apache.org/jira/browse/SPARK-9686

解决方案:
使用hiveserver2代替spark的thriftserver。

3)、使用hive的hvieserver2代替thriftserver

停止thriftserver

$SPARK_HOME/sbin/stop-thriftserver.sh

启动hiveserver2

hive --service hiveserver2

这里写图片描述

4)、创建数据库

网址:http://blog.cloudera.com/blog/2015/10/how-to-use-hues-notebook-app-with-sql-and-apache-spark-for-analytics/
csv文件下载地址:http://www.bayareabikeshare.com/datachallenge

导航栏找到DataBrowers,打开metastore tables进入metastore manager管理页面。
这里写图片描述

点击右上角的+号按钮,添加数据库。
这里写图片描述
创建数据库:bikeshare
创建成功后,选择bikeshare数据库,为该数据库创建表:

点击右上角的,create table from file,导入trips表。

这里写图片描述
然后next,进入step2,next进入step3,在step3中可以修改字段类型,名称。
这里写图片描述
然后点击create table便可以创建成功了。

然后导入stations表。
进入notebook,选择sql选项执行以下sql便可以得到结果。

SELECT startterminal, startstation, COUNT(1) AS count FROM bikeshare.trips GROUP BY startterminal, startstation ORDER BY count DESC LIMIT 10;

返回:
这里写图片描述

执行:

SELECT
 s.station_id,
 s.name,
 s.lat,
 s.long,
 COUNT(1) AS count
FROM `bikeshare`.`trips` t
JOIN `bikeshare`.`stations` s ON s.station_id = t.endterminal
WHERE t.startterminal = 70
GROUP BY s.station_id, s.name, s.lat, s.long
ORDER BY count DESC LIMIT 10

返回:
这里写图片描述

执行:

SELECT
    hour,
    COUNT(1) AS trips,
    ROUND(AVG(duration) / 60) AS avg_duration
FROM (
    SELECT
        CAST(SPLIT(SPLIT(t.startdate, ' ')[1], ':')[0] AS INT) AS hour,
        t.duration AS duration
    FROM `bikeshare`.`trips` t
    WHERE
        t.startterminal = 70
        AND
        t.duration IS NOT NULL
    ) r
GROUP BY hour
ORDER BY hour ASC;

返回:
这里写图片描述
至此hue与hive便整合成功了。但是由于hive是在mapreduce中运行,自然速度是不理想了。虽然,我们不能使用sparksql来获取导航栏数据库、数据库表、已经表字段的数据,那么我们单单执行查询能不能把sparksql整合进来呢,答案是可以的。

6、整合sparksql

1)、配置hue
cd /bigdata/hue/desktop/conf
vim /hue.ini

找到[spark]选项进行修改:

[spark]
  # Host address of the Livy Server.
 #livy_server_host=bigdata1

  # Port of the Livy Server.
 #livy_server_port=8998

  # Configure Livy to start in local 'process' mode, or 'yarn' workers.
 #livy_server_session_kind=yarn

  # Host of the Sql Server
 sql_server_host=bigdata1

  # Port of the Sql Server
 sql_server_port=10008

可以看到,有专门的sparksql配置。

打开sparksql选项:

 # One entry for each type of snippet. The first 5 will appear in the wheel.
  [[interpreters]]
    # Define the name and how to connect and execute the language.

    [[[hive]]]
      # The name of the snippet.
      name=Hive
      # The backend connection to use to communicate with the server.
      interface=hiveserver2

    [[[impala]]]
      name=Impala
      interface=hiveserver2

    [[[sparksql]]]
       name=SparkSql
       interface=hiveserver2

找到[[interpreters]]中的[[[sparksql]]]选项卡,把注释去掉。这样在notebook的选项卡中就能找到sparksql选项了。

配置spark:

vim $SPARK_HOME/conf/hive-site.xml

添加如下内容,将thriftserver的端口号更改成10008

<property>
    <name>hive.server2.thrift.port</name>
    <value>10008</value>
    <description>Port number of HiveServer2 Thrift interface when hive.server2.transport.mode is 'binary'.</description>
  </property>

重启hue,已经spark的thriftserver服务。
打开notebook,随意执行一条sql语句,发现不起作用,任务依然通过hive执行,启动的是mapreduce任务。
经过查看hue源码,这里是hue的一个bug。
具体修改如下:

vim $HUE_HOME/desktop/libs/notebook/src/notebook/connectors/hiveserver2.py

将该方法:

  def _get_db(self, snippet):
    if snippet['type'] == 'hive':
      name = 'beeswax'
    elif snippet['type'] == 'impala':
      name = 'impala'
    else:
      name = 'spark-sql'

    return dbms.get(self.user, query_server=get_query_server_config(name=name))

中的name = ‘spark-sql’修改成name=’sparksql’。保存退出,重启hue,然后运行sparksql便可以成功了。
不过此处还存在一个问题,第一次启动spark的thriftserver,并执行第一sql查询,会报错,通过日志分析,应该是第一次查询derby数据库,导致没有对应的数据库已经表,后续的查询表成功连接到metastore了。


欢迎拍砖,能力有限,相互学习,相互进步

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值