• 菜鸟先飞之初识Hive、安装教程及常见问题


    一、初识Hive

    1、什么是Hive

    Hive是基于Haddop的数据仓库工具,可以将结构化的数据文件映射为一张数据库表并提供SQL查询功能,可以将SQL语句转换

    MapReduce任务运行。

    Hive提供了一系列的工具,可以给用来数据提取转换加载(ETL)是一种存储、查询和分析存储在Hadoop中的大规模数据的机制

    2、Hive发展历史及版本

    2007年8月 – 始于Facebook

    2013年5月 – 0.11 Stinger Phase 1 ORC HiveServer2

    2013年10月 – 0.12.0 Stinger Phase 2 - ORC improvement

    2014年4月 – Hive 0.13.0 as Stinger Phase 3

    2014年11月 – Hive 0.14.0

    2015年2月 – Hive 1.0.0

    2015年5月 – Hive 1.2.0 (1.2.1 本系列课实验重点版本 )

    2016年2月 – Hive 2.0.0 (添加 HPLSQL, LLAP)

    2016年6月 – Hive 2.1.0 (2.1.0 本系列课实验补充版本 )

    3、为什么要使用Hive

    提供了一个简单的优化模型

    HQL类SQL语法,简化MR开发

    支持在不同的计算框架上运行

    支持在HDFS和HBase上临时查询数据

    支持用户自定义函数、格式

    成熟的JDBC和ODBC驱动程序,用于ETL和BI

    稳定可靠(真实生产环境)的批处理

    有庞大活跃的社区

    4、Hive体系架构

    Hive的体系结构分以下几个部分

    1)用户接口主要是3个:CLI,Client,HWI(Hive Web Interface)

    2)Hive将元数据存储在数据库中,如MySQL、Derby。

    3)解释器、编译器、优化器完成HQL查询语句从词法分析、语句分析、编译、优化到查询计划的生成。生成的查询计划存储在HDFS中,随后由MapReduce调用执行。
    4)Hive的数据存储在HDFS中,大部分的查询、计算由MapReduce完成(注意 含*的查询,例如:select * from tbl 不会生成 MapReduce任务)

    5、Hive与传统数据库

    6、交互模式

    7、Hive数据类型

    1)原始数据类型(类似于SQL数据类型)

    2)复杂数据类型

    * ARRAY:存储的数据为相同类型
    * MAP:具有相同类型的键值对
    * STRUCT:封装了一组字段

    8、Hive元数据结构

    9、Hive数据表

    分为内部表和外部表

    1) 内部表(管理表)

    HDFS中为所属数据库目录下的子文件夹

    数据完全由Hive管理,删除表(元数据)会删除数据

    2)外部表(External Tables)

    数据保存在指定位置的HDFS路径中

    Hive不完全管理数据,删除表(元数据)不会删除数据

    10、Hive建表语句

    create table student if not exists (

    id int,

    name string)

    row format delimited fields terminated by ‘,’

    location ‘/file’;

    11、建表语句分析

    二、配置Hive

    1、安装准备

    jdk-8u221-linux-x64.tar.gz

    hadoop-2.6.0-cdh5.14.2.tar.gz

    hive-1.1.0-cdh5.14.2.tar.gz

    zookeeper-3.4.6.tar.gz

    MySQL-client-5.6.46-1.el7.x86_64.rpm

    MySQL-server-5.6.46-1.el7.x86_64.rpm

    mysql-connector-java-5.1.48-bin.jar

    更改主机名:hostnamectl set-hostname hadoop01

    更改主机列表:vi /etc/hosts 新增:192.168.48.104 hadoop01保存退出

    在opt目录下创建soft文件夹:mkdir /opt/soft

    切换至soft文件夹 cd /opt/soft

    将文件拖入此目录中

    解压hadoop: tar -zxfhadoop-2.6.0-cdh5.14.2.tar.gz

    解压hive:tar -zxfhive-1.1.0-cdh5.14.2.tar.gz

    解压zookeeper:tar -zxfzookeeper-3.4.6.tar.gz

    解压jdk: tar -zxf jdk-8u221-linux-x64.tar.gz

    给文件夹改名:

    mvhadoop-2.6.0-cdh5.14.2 hadoop

    mvhive-1.1.0-cdh5.14.2 hive hive

    mvzookeeper-3.4.6 zookpr

    mvjdk-8u221-linux-x64 java8

    配置免密登录:

    ssh-keygen -t rsa -P ‘’

    ssh-copy-id hadoop01

    ps:需要稍等片刻

    2、配置jdk及环境变量

    vi /etc/profile

    shift + g 最后一行添加

    export JAVA_HOME=/opt/soft/java8

    export JRE_HOME=/opt/soft/java8/jre

    export CLASSPATH=.: J A V A _ H O M E / l i b / d t . j a r : JAVA\_HOME/lib/dt.jar: JAVA_HOME/lib/dt.jar:JAVA_HOME/lib/tools.jar

    export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin

    export HADOOP_HOME=/opt/soft/hadoop

    export HIVE_HOME=/opt/soft/hive

    export HADOOP_MAPRED_HOME=$HADOOP_HOME

    export HADOOP_COMMON_HOME=$HADOOP_HOME

    export HADOOP_HDFS_HOME=$HADOOP_HOME

    export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

    export HADOOP_OPTS=“-Djava.library.path=$HADOOP_HOME/lib”

    export PATH= P A T H : PATH: PATH:JAVA_HOME/bin: J R E _ H O M E / b i n : JRE\_HOME/bin: JRE_HOME/bin:HADOOP_HOME/sbin: H A D O O P _ H O M E / b i n : HADOOP\_HOME/bin: HADOOP_HOME/bin:HIVE_HOME/bin

    保存退出

    使配置即时生效:source /etc/profile

    3、配置hadoop

    切换至:cd /opt/soft/hadoop/etc/hadoop 目录

    vi core-site.xml

    新增

    fs.defaultFS

    hdfs://192.168.48.104:9000

    hadoop.tmp.dir

    /opt/soft/hadoop/tmp

    hadoop.proxyuser.root.hosts

    *

    hadoop.proxyuser.root.groups

    *

    vi hdfs-site.xml

    dfs.replication

    1

    dfs.permissions.enable

    false

    vi mapred-site.xml

    mapreduce.framework.name

    yarn

    vi yarn-site.xml

    yarn.nodemanager.aux-services

    mapreduce_shuffle

    yarn.resourcemanager.localhost

    localhost

    修改jdk环境变量

    vi hadoop-env.sh

    export JAVA_HOME=/opt/soft/java8

    4、配置zookeeper

    切换目录至:cd /opt/soft/zookpr

    将zoo_sample.cfg改名:mv zoo_sample.cfg/ zoo.cfg

    修改zoo.cfg :vi zoo.cfg

    修改:将路径改到zookpr目录下

    dataDir=/opt/soft/zookpr/zookprdata

    新增

    server.1=hadoop01:2888:3888

    mkdir /opt/soft/zookprzookprdata 使core-site.xml配置中的文件夹存在

    格式化:hadoop namenode -format

    运行zookper:start-all.sh

    ps:首次需要输入四次yes

    jps:查看进程如下图 配置无误

    5、配置mysql

    查看冲突软件:rpm -qa | grep mariadb

    卸载冲突文件:rpm -emariadb-libs-5.5.64-1.el7.x86_64 --nodeps

    切换至:cd /opt/soft 目录下

    下载MySQL组件:

    yum install -y nettools

    yum install -y perl

    yum install -y autoconf

    解压客户端:rpm -ivh MySQL-client-5.6.46-1.el7.x86_64.rpm

    解压服务端:rpm -ivh MySQL-server-5.6.46-1.el7.x86_64.rpm

    启动数据库:service mysql start

    修改配置文件: vi /usr/my.conf‘

    [client]

    default-character-set = utf8

    [mysql]

    skip-grant-tables

    character-set-server = utf8

    collation_server = utf8_general_ci

    lower_case_table_names

    保存退出

    重启MySQL:service mysql restart

    进入MySQL:mysql

    使用数据库:use mysql

    设置登陆密码:update user set password = password(‘ok’);

    /q 退出数据库

    6、配置Hive

    切换至:cd /opt/soft/zookpr/conf 目录

    新建hive-site.xml文件:vi hive-site.xml

    hive.metastore.warehouse.dir

    /usr/hive/warehouse

    管理表存储的位置,可以是linux中的目录,也可以是相对于fs.default.name有关的目录

    hive.metastore.local

    true

    javax.jdo.option.ConnectionURL

    jdbc:mysql://127.0.0.1:3306/hivecreateDatabaseIfNotExist=true

    javax.jdo.option.ConnectionDriverName

    com.mysql.jdbc.Driver

    javax.jdo.option.ConnectionUserName

    root

    javax.jdo.option.ConnectionPassword

    ok

    hive.server2.authentication

    NONE

    hive.server2.thrift.client.user

    root

    hive.server2.thrift.client.password

    ok

    更改hive-env.sh.template文件名:mv hive-env.sh.template hive-env.sh

    修改hive-env.sh文件:vi hive-env.sh

    export HADOOP_HOME=/opt/soft/hadoop

    export HIVE_CONF_DIR=/opt/soft/hive/conf

    export HIVE_AUX_JARS_PATH=/opt/soft/hive/lib

    export JAVA_HOME=/opt/soft/java8

    将mysql-connector-java-5.1.48-bin.jar移动到移动到/opt/soft/hive/lib目录下:

    mv /opt/soft/mysql-connector-java-5.1.48-bin.jar /opt/soft/hive/lib

    hadoop fs -ls / 查看hdfs目录文件

    hadoop fs -mkdir -p /usr/hive/warehouse 创建管理表存储位置

    hadoop fs-chmod -R 777 /usr/hive 给文件夹赋权

    初始化 MySQL:schematool -dbType mysql -initSchema

    关闭黑界面后台运行提示功能,节省一个后台窗口:

    hive后台执行:nohup hive --service hiveserver2 &

    beeline -u jdbc:hive2://localhost:10000 命令行模式

    ps:最好在hive/bin目录下运行

    要退出beeline :!q

    hive 进入hive 交互模式

    退出 quit; 或者 exit;

    此时 jps

    7、常见错误

    1)未能成功连接数据库(命令行模式启动失败)

    可能的原因:1、未启动Hive后台运行 2、数据库hive已经存在 3、配置文件更改后未重新启动

    2)无法创建数据库

    解决方案:查看hive-site.xml配置文件中的管理表存储的位置 文件夹是否存在 以及 有无赋权

    3)无法删除数据库中的表

    连接数据库的jar包版本较低,需要升级

    4)未在hive/bin目录下运行beeline模式,导致的冲突问题

    5)其他,欢迎补充

  • 相关阅读:
    【代码实践】HAT代码Window平台下运行实践记录
    Delete `␍` 最简单最有效的解决方法和解释(VScode)
    Config
    ROS个别命令的使用 ros ros2
    【AI视野·今日Robot 机器人论文速览 第五十五期】Mon, 16 Oct 2023
    VuePress 不用Algolia 全文搜索那就缺了灵魂
    二分法基本思路和实现
    tensorflow学习环境安装
    早期的Haar Cascade 哈尔级联人脸识别
    Request请求转发与Respones请求重定向有什么区别?
  • 原文地址:https://blog.csdn.net/m0_67402774/article/details/126605484