美文网首页
jupyter访问hive进行数据分析

jupyter访问hive进行数据分析

作者: mll_497f | 来源:发表于2021-07-05 20:45 被阅读0次

     

    I 写在前面

    长文

    为针对华为平台进行数据分析做准备

    需要经验

    Anaconda配置经验

    需要请留言

    hadoop、hive集群配置经验

    python开发经验

    实验内容

    基于jupyter针对hive集群进行数据分析

    查询结果便于分析、处理、存储、下载

    实验材料

    hadoop集群(hive依赖)(镜像)

    hive集群(镜像)

    anaconda2(linux版本)

    pyhs2-0.6.0.tar.gz

    sasl-0.2.1.tar.gz

    thrift-0.11.0.tar.gz

    II 集群搭建

    开启宿主机ip路由转发功能

       echo 1 > /proc/sys/net/ipv4/ip_forward

    2 搭建镜像集群

    Shell 操作命令

    # 1 拉取现有集群镜像

    docker pull limengjiao029/hive:v0.1

    # 2 基于镜像创建容器实例

    docker run --privileged -tid -p 8000:8000 -p 8088:8088 -p 8042:8042 -p 50070:50070 -p 8678:8678 -p10000:10000 limengjiao029/hive:v0.1

    # 3 进入容器,替换容器 ID, 需要Docker基础

    docker exec -ti containerID /bin/bash

    # 4 启动 hadoop

    /opt/modules/hadoop-2.7.7/sbin/start-all.sh

    # 5 启动metastore服务

    # 5.1 无日志启动

    # nohup hive --service metastore 2>&1 &

    nohup hive --service metastore >> ~/metastore.log 2>&1 &

    # 6 启动hiveserver2服务,jdbc连接均需要

    # 6.1 无日志启动

    # nohup hive --service hiveserver2 2>&1 &

    # 6.2 查看hiveserver2 进程

    # ps -aux| grep hiveserver2

    # 6.3 杀死进程

    # kill -9 pid

    # 6.4 验证是否有效

    # beeline

    # !connect jdbc:hive2://localhost:10000

    # show tables;

    nohup hive --service hiveserver2 >> ~/hiveserver2.log 2>&1 &

    # 7 安装anaconda2

    bash Anaconda2-2019.03-Linux-x86_64.sh

    # 7.1 配置环境变量, 在/etc/profile文件中加入下列语句, 并source生效

    export PATH=/root/anaconda2/bin:$PATH

    source /etc/profile

    # 7.2 判断python是否anaconda2版本

    python -v

    # 8 安装sasl

    # 8.1 解压 sasl-0.2.1.tar.gz

    # tar -zxvf sasl-0.2.1.tar.gz

    # cd sasl-0.2.1

    python setup.py install

    # 9 安装thrift

    # 9.1 解压 thrift-0.11.0.tar.gz

    # tar -zxvf thrift-0.11.0.tar.gz

    # cd thrift-0.11.0

    python setup.py install

    # 10 安装pyhs2

    # 10.1 解压 pyhs2-0.6.0.tar.gz

    # tar -zxvf pyhs2-0.6.0.tar.gz

    # cd pyhs2-0.6.0

    python setup.py install

    # 11 配置jupyter_notebook_config.py

    # 11.1 密码生成命令

    # from notebook.auth import passwd

    # passwd()

    c.NotebookApp.allow_remote_access = True

    c.NotebookApp.allow_root = True

    c.NotebookApp.ip = '*'

    c.NotebookApp.notebook_dir = u'/home/jupyter_root_dir'

    c.NotebookApp.open_browser = False

    c.NotebookApp.password = u'sha1:4600e66850b0:aedd50f9cabd7102cbcb1c8ba38d4e2500e46f67'

    c.NotebookApp.port = 8678

    # 12 后台驻留启动jupyter notebook

       nohup jupyter notebook --allow-root >> nohup.out 2>&1 &

    - 运行效果

        - 192.168.232.128为虚拟机IP地址(容器运行时,已将8678端口映射到宿主机)

    3 额外命令

    # 查看文件行数据量

    wc -l person.txt

    # 清空文件

    cat /dev/null > /data/target.log

    # jdbc链接 hiveserver, 默认端口 10000

       !connect jdbc:hive2://localhost:10000

    III Jupyter访问远程Hive

    示例代码

    须知道访问 hive 用户名、密码

    jdbc 默认端口 10000,docker run 时已将端口映射到宿主机

    hive 集群数据表等资源参考地址

    import pyhs2

    import pandas as pd

    pd.set_option("display.max_rows",500)

    pd.set_option("display.max_columns",200)

    pd.set_option("display.max_colwidth",500)

    conn= pyhs2.connect(host='localhost',port=10000,authMechanism="PLAIN",user='root',password='root',database='default')

    cursor=conn.cursor()

    sql = """

    select * from person limit 30

    """

    cursor.execute(sql)

    results = cursor.fetchall()

       result_df = pd.DataFrame(results, columns=['name','cert_code'])

    查看hive表结构

    conn= pyhs2.connect(host='localhost',port=10000,authMechanism="PLAIN",user='root',password='root',database='default')

    cursor=conn.cursor()

    sql = """

    desc formatted person

    """

    cursor.execute(sql)

    data = cursor.fetchall()

    tab_schema = pd.DataFrame(data,columns=['col_name','data_type','comment'])

       tab_schema

    IV 参考文章

    hive的启动和停止

    Docker容器学习梳理–容器间网络通信设置(Pipework和Open vSwitch)

    Docker的网络模式bridge、host、container other、overlay

    Python 操作 MySQL 数据库

    VI 最后小结

    实验耗费个人很长时间(至少3天),涉及技术面比较广

    涉及到Hive访问原理,之前脑壳里还是有些混乱

    容器联网问题,耗时最多

    thrift、sasl、pyhs2 安装失败

    Could not start SASL: Error in sasl_client_start (-4) SASL(-4): no mechanism available

    相关文章

      网友评论

          本文标题:jupyter访问hive进行数据分析

          本文链接:https://www.haomeiwen.com/subject/rpwiultx.html