大数据--python远程连接Hive

步骤:

启动metastore

启动hiveserver2

使用beeline进行连接测试,查看地址等是否能够成功连接(确认无误可以跳过)

使用python连接hive

(粗暴的文件配置以及完整操作见文末)

一.启动hiveserver2

1.配置mode为http,端口为10001(默认)


  hive.server2.transport.mode
  http


      hive.server2.thrift.http.port
      10001
  

  
      hive.server2.thrift.http.path
      cliservice
  

2.启动

启动metastore

nohup hive --service metastore &

启动hiveserver2

nohup hive --service hiveserver2 --hiveconf hive.server2.thrift.port=10001 --hiveconf hive.root.logger=INFO,console &

大数据--python远程连接Hive_第1张图片

3.查看hiveserver2所在的端口

未修改hive-site的默认情况下mode为TCP,HiveServer2 在端口 10000上运行,如果想更改端口,可以通过更改hive-site.xml文件中的hive.server2.thrift.port  属性值来实现。使用hive命令进入hive命令行后使用以下命令来查看hive-site中的各种配置(格式为set 属性名),例如:

set hive.server2.thrift.port

image

(如果设置为http协议,即文章开头的操作,则默认端口为10001,踩过坑之后把mode设置成了http,在我的电脑上tcp连接不上)

netstat -anp | grep 1000

大数据--python远程连接Hive_第2张图片

4.使用jps命令来查看 HiveServer2 是否正在运行(RunJar服务)

大数据--python远程连接Hive_第3张图片

5.浏览器查看

HiveServer2 还在端口 10002 (默认)上启动一个 Jetty Http 服务器,提供 Web UI。在hive连接出错时可以多看看日志中的hive日志。

如果没有在配置文件中设置启动地址的话,直接用hive所在的地址(虚拟机的地址)+10002即可访问,例如我的访问地址就是http://192.168.121.130:10002/(注意:这里很多教程直接用的localhost之类的,是因为他们的hive部署在本地)

大数据--python远程连接Hive_第4张图片

假如修改地址配置,在hive-site中添加如下配置,则访问地址为http://node01:10002/(但是使用ip+端口号的形式也可以正常访问)


    hive.server2.thrift.bind.host
    node01
    Bind host on which to run the HiveServer2 Thrift service.

二.beeline测试连接Hive

1.启动beeline

$HIVE_HOME/bin/beeline

大数据--python远程连接Hive_第5张图片

2.连接hive

(1)使用地址连接

连接地址直接把浏览器访问地址的10002改成10001即可,注意后面要加上hive的数据库,例如default,这里使用了之前创建好的study数据库。后面的一大串字符也是必要的,在python连接时都要加入(对于我的操作来说)

!connect jdbc:hive2://192.168.121.130:10001/study;transportMode=http;httpPath=cliservice

大数据--python远程连接Hive_第6张图片

会提示user not allowed to XXX,这个是权限设置什么什么的,具体的感兴趣可以自行搜索报错,这里直接给出解决方案:在每台虚拟机的hadoop的配置文件/etc/hadoop/core-site.xml中增加如下配置,三台都要重启生效


    hadoop.proxyuser.root.hosts
    *


    hadoop.proxyuser.root.groups
    *

(2)直接默认连接

在不清楚连接的Hive地址时,通过以下命令连接,然后按照提示输入用户名和密码即可(连接的用户名和密码在hive的hive-site.xml文件中设置,见Hive部署这篇文章),这里因为没有在配置文件中设置metastore的位置,因此会有警告。

!connect jdbc:hive2://

image

大数据--python远程连接Hive_第7张图片

添加metastore配置

在hive的hive-site.xml中添加以下内容,(属性值为空,则表示是 metastore 在本地,否则就是远程),这里设置为虚拟机的地址以及默认的9083端口,注意修改完成后要重启。


    hive.metastore.uris
    thrift://192.168.121.130:9083
    Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.

大数据--python远程连接Hive_第8张图片

三.python连接hive

1.安装包

安装 pure-sasl
pip install pure-sasl
安装 thrift_sasl
pip install thrift_sasl==0.2.1 --no-deps
安装thrift
pip install thrift_sasl==0.2.1 --no-deps
安装最终的:impyla
pip install impyla
pip install thriftpy

2.python

输出study数据库中的所有表

from impala.dbapi import connect


conn = connect(host='192.168.121.130', port=10001, auth_mechanism='PLAIN', user='用户名',
               password='密码', database='study', use_http_transport='http', http_path='cliservice')
cursor = conn.cursor()
cursor.execute('show tables')
for row in cursor:
    print(row)

大数据--python远程连接Hive_第9张图片

四.快速完成配置与连接

1.配置文件

(1)hive-site.xml(node01上修改)



    hive.metastore.warehouse.dir        
    /user/hive_local/warehouse    


    hive.exec.scratchdir
    /tmp_local/hive


    javax.jdo.option.ConnectionURL
    jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true&usessL=false


    javax.jdo.option.ConnectionDriverName    
    com.mysql.jdbc.Driver


    javax.jdo.option.ConnectionUserName
    root


    javax.jdo.option.ConnectionPassword    
    MySQL@2022


    hive.cli.print.header            
    true


    hive.cli.print.current.db
       true


    hive.exec.mode.local.auto
       true


  hive.server2.authentication
  NOSASL


  hive.server2.use.SSL
  false


  hive.server2.transport.mode
  http


      hive.server2.thrift.http.port
      10001
  

  
      hive.server2.thrift.http.path
      cliservice
  

    hive.metastore.uris
    thrift://192.168.121.130:9083
    Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.
   

    hive.server2.thrift.bind.host
    node01
    Bind host on which to run the HiveServer2 Thrift service.

(2)core-site.xml(node01,02,03上修改)



    fs.defaultFS
    hdfs://master


    hadoop.tmp.dir
    /export/servers/hadoop-2.7.4/tmp


    ha.zookeeper.quorum
    node01:2181,node02:2181,node03:2181


    hadoop.proxyuser.root.hosts
    *


    hadoop.proxyuser.root.groups
    *

2.连接测试

启动hiveserver2服务,在beeline上进行测试是否可以连接

#node01,02,03分别依次执行
zkServer.sh start
zkServer.sh status
hadoop-daemon.sh start journalnode

#node01执行
start-dfs.sh
start-yarn.sh
nohup hive --service metastore &
nohup hive --service hiveserver2 --hiveconf hive.server2.thrift.port=10001 --hiveconf hive.root.logger=INFO,console &
netstat -anp | grep 1000
$HIVE_HOME/bin/beeline
!connect jdbc:hive2://192.168.121.130:10001/study;transportMode=http;httpPath=cliservice

3.测试无误后执行三中的python即可

你可能感兴趣的:(大数据,hive,大数据,hadoop,数据仓库,分布式)