大数据基础知识学习-----Hive学习笔记(二)Hive安装环境准备

本文详细介绍了在Hadoop集群上安装和配置Hive的步骤,包括从官方地址下载Hive,解压并配置Hive环境,设置HADOOP_HOME,创建Hive所需的HDFS目录,启动Hive服务,以及将本地文件导入Hive的过程。同时,文中还涉及到Mysql的安装,用于Hive元数据存储,并展示了配置Hive连接Mysql的步骤。最后,文章提到了Hive的一些基本操作和常用命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Hive安装环境准备

Hive安装地址

Hive官网地址http://hive.apache.org/

文档查看地址https://cwiki.apache.org/confluence/display/Hive/GettingStarted

下载地址http://archive.apache.org/dist/hive/

github地址https://github.com/apache/hive

Hive安装部署

Hive安装及配置

  • 把apache-hive-1.2.1-bin.tar.gz上传到linux的/opt/software目录下
  • 解压apache-hive-1.2.1-bin.tar.gz到/opt/module/目录下面
    • [luo@hadoop102 software]$ tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /opt/module/
  • 修改apache-hive-1.2.1-bin.tar.gz的名称为hive
    • [luo@hadoop102 module]$ mv apache-hive-1.2.1-bin/ hive
  • 修改/opt/module/hive/conf目录下的hive-env.sh.template名称为hive-env.sh
    • [luo@hadoop102 conf]$ mv hive-env.sh.template hive-env.sh
  • 配置hive-env.sh文件
    • 配置HADOOP_HOME路径:export HADOOP_HOME=/opt/module/hadoop-2.7.2
    • 配置HIVE_CONF_DIR路径:export HIVE_CONF_DIR=/opt/module/hive/conf

Hive集群配置

  • 必须启动hdfs和yarn
    • [luo@hadoop102 hadoop-2.7.2]$ sbin/start-dfs.sh
    • [luo@hadoop103 hadoop-2.7.2]$ sbin/start-yarn.sh
  • 在HDFS上创建/tmp和/user/hive/warehouse两个目录并修改他们的同组权限可写
    • [luo@hadoop102 hadoop-2.7.2]$ bin/hadoop fs -mkdir /tmp
    • [luo@hadoop102 hadoop-2.7.2]$ bin/hadoop fs -mkdir -p /user/hive/warehouse
    • [luo@hadoop102 hadoop-2.7.2]$ bin/hadoop fs -chmod g+w /tmp
    • [luo@hadoop102 hadoop-2.7.2]$ bin/hadoop fs -chmod g+w /user/hive/warehouse

Hive基本操作

  • 启动hive:[luo@hadoop102 hive]$ bin/hive
  • 查看数据库:hive>show databases;
  • 打开默认数据库:hive>use default;
  • 显示default数据库中的表:hive>show tables;
  • 创建一张表:hive> create table student(id int, name string);
  • 显示数据库中有几张表:hive>show tables;
  • 查看表的结构:hive>desc student;
  • 向表中插入数据:hive> insert into student values(1000,"ss");
  • 查询表中数据:hive> select * from student;
  • 退出hive:hive> quit;

将本地文件导入Hive实例

需求:将本地/opt/module/datas/student.txt这个目录下的数据导入到hive的student(id int, name string)表中。

数据准备

在/opt/module/datas/student.txt这个目录下准备数据

  • 在/opt/module/目录下创建datas

    • [luo@hadoop102 module]$ mkdir datas
  • 在/opt/module/datas/目录下创建student.txt文件并添加数据

    • [luo@hadoop102 module] touchstudent.txt[luo@hadoop102module] t o u c h s t u d e n t . t x t [ l u o @ h a d o o p 102 m o d u l e ] vi student.txt
      1001 zhangshan
      1002 lishi
      1003 zhaoliu

    注意以tab键间隔。

Hive实际操作

  • 启动hive:[luo@hadoop102 hive]$ bin/hive
  • 显示数据库:hive>show databases;
  • 使用default数据库:hive>use default;
  • 显示default数据库中的表:hive>show tables;
  • 删除已创建的student表:hive> drop table student;
  • 创建student表, 并声明文件分隔符’\t’:
    • hive> create table student(id int, name string) ROW FORMAT DELIMITED FIELDS TERMINATED BY '\t';
  • 加载/opt/module/datas/student.txt 文件到student数据库表中:
    • hive> load data local inpath '/opt/module/datas/student.txt' into table student;
  • Hive查询结果
    • hive> select * from student;
      OK
      1001 zhangshan
      1002 lishi
      1003 zhaoliu
      Time taken: 0.266 seconds, Fetched: 3 row(s)

Mysql的安装

安装包准备

  • 查看mysql是否安装,如果安装了,卸载mysql

    • 查看:rpm -qa|grep mysql
    • 卸载:rpm -e --nodeps mysql-libs-5.1.73-7.el6.x86_64
  • 解压mysql-libs.zip文件到当前目录

    • [root@hadoop102 software]# unzip mysql-libs.zip
    • [root@hadoop102 software]# ls
  • 进入到mysql-libs文件夹下,并设置当前用户执行权限

    • [root@hadoop102 mysql-libs]# ll
      总用量 76048
      -rw-r–r–. 1 root root 18509960 3月 26 2015 MySQL-client-5.6.24-1.el6.x86_64.rpm
      -rw-r–r–. 1 root root 3575135 12月 1 2013 mysql-connector-java-5.1.27.tar.gz
      -rw-r–r–. 1 root root 55782196 3月 26 2015 MySQL-server-5.6.24-1.el6.x86_64.rpm

    • [root@hadoop102 mysql-libs]# chmod u+x ./*

    • [root@hadoop102 mysql-libs]# ll

    总用量 76048
    -rwxr–r–. 1 root root 18509960 3月 26 2015 MySQL-client-5.6.24-1.el6.x86_64.rpm
    -rwxr–r–. 1 root root 3575135 12月 1 2013 mysql-connector-java-5.1.27.tar.gz
    -rwxr–r–. 1 root root 55782196 3月 26 2015 MySQL-server-5.6.24-1.el6.x86_64.rpm

安装Mysql服务器

  • 安装mysql服务端:[root@hadoop102 mysql-libs]# rpm -ivh MySQL-server-5.6.24-1.el6.x86_64.rpm
  • 查看产生的随机密码:[root@hadoop102 mysql-libs]# cat /root/.mysql_secret
  • 查看mysql状态:[root@hadoop102 mysql-libs]# service mysql status
  • 启动mysql:[root@hadoop102 mysql-libs]# service mysql start

安装Mysql客户端

  • 安装mysql客户端:[root@hadoop102 mysql-libs]# rpm -ivh MySQL-client-5.6.24-1.el6.x86_64.rpm
  • 连接mysql:[root@hadoop102 mysql-libs]# mysql -uroot -pOEXaQuS8IWkG19Xs
  • 修改密码:mysql>SET PASSWORD=PASSWORD(‘000000’);
  • 退出mysql:mysql>exit

Mysql中user表中主机配置

配置只要是root用户+密码,在任何主机上都能登录MySQL数据库。

  • 进入mysql:[root@hadoop102 mysql-libs]# mysql -uroot -p000000
  • 显示数据库:mysql>show databases;
  • 使用mysql数据库:mysql>use mysql;
  • 展示mysql数据库中的所有表:mysql>show tables;
  • 展示user表的结构:mysql>desc user;
  • 查询user表:mysql>select User, Host, Password from user;
  • 修改user表,把Host表内容修改为%:mysql>update user set host='%' where host='localhost';
  • 删除root用户的其他host:
    • mysql>delete from user where Host='hadoop102 ';
    • mysql>delete from user where Host='127.0.0.1';
    • mysql>delete from user where Host='::1';
  • 刷新:mysql>flush privileges;
  • 退出:mysql> quit;

Hive元数据配置到Mysql

驱动拷贝

  • 在/opt/software/mysql-libs目录下解压mysql-connector-java-5.1.27.tar.gz驱动包
    • [root@hadoop102 mysql-libs]# tar -zxvf mysql-connector-java-5.1.27.tar.gz
  • 拷贝/opt/software/mysql-libs/mysql-connector-java-5.1.27目录下的mysql-connector-java-5.1.27-bin.jar到/opt/module/hive/lib/
    • [root@hadoop102 mysql-connector-java-5.1.27]# cp mysql-connector-java-5.1.27-bin.jar /opt/module/hive/lib/

配置Metastore到MySql

  • 在/opt/module/hive/conf目录下创建一个hive-site.xml

    • [root@hadoop102 conf]# touch hive-site.xml
    • [root@hadoop102 conf]# vi hive-site.xml
  • 根据官方文档配置参数,拷贝数据到hive-site.xml文件中。

    • ~~~xml

Hive常用交互命令

  • [luo@hadoop102 hive]$ bin/hive -help
  • “-e”不进入hive的交互窗口执行sql语句
    • [luo@hadoop102 hive]$ bin/hive -e “select id from default.student;”
  • “-f”执行脚本中sql语句
    • 在/opt/module/datas目录下创建hivef.sql文件
    • [luo@hadoop102 datas]$ touch hivef.sql
    • 文件中写入正确的sql语句
    • select *from student;
    • 执行文件中的sql语句
    • [luo@hadoop102 hive]$ bin/hive -f /opt/module/datas/hivef.sql
    • 执行文件中的sql语句并将结果写入文件中
    • [luo@hadoop102 hive]$ bin/hive -f /opt/module/datas/hivef.sql > /opt/module/datas/hive_result.txt

Hive其他命令操作

  • 退出hive窗口:
    • hive(default)>exit;
    • hive(default)>quit;
  • 在hive cli命令窗口中如何查看hdfs文件系统
    • hive(default)>dfs -ls /;
  • 在hive cli命令窗口中如何查看hdfs本地系统
    • hive(default)>! ls /opt/module/datas;
  • 查看在hive中输入的所有历史命令
    • 进入到当前用户的根目录/root或/home/atguigu
    • 查看. hivehistory文件:[luo@hadoop102 ~]$ cat .hivehistory

Hive常见属性配置

Hive数据仓库位置配置

  • Default数据仓库的最原始位置是在hdfs上的:/user/hive/warehouse路径下
  • 在仓库目录下,没有对默认的数据库default创建文件夹。如果某张表属于default数据库,直接在数据仓库目录下创建一个文件夹。
  • 修改default数据仓库原始位置(将hive-default.xml.template如下配置信息拷贝到hive-site.xml文件中)

~~~properties

hive.metastore.warehouse.dir
/user/hive/warehouse
location of default database for the warehouse

~~~

  • 配置同组用户有执行权限
    • bin/hdfs dfs -chmod g+w /user/hive/warehouse

显示当前数据库,以及查询表的头信息配置

  • 在hive-site.xml文件中添加如下配置信息,就可以实现显示当前数据库,以及查询表的头信息配置。

~~~properties

hive.cli.print.header
true


hive.cli.print.current.db
true

~~~

  • 重新启动hive,对比配置前后差异

Hive运行日志信息配置

  • Hive的log默认存放在/tmp/atguigu/hive.log目录下(当前用户名下)。
  • 修改hive的log存放日志到/opt/module/hive/logs
    • 修改/opt/module/hive/conf/hive-log4j.properties.template文件名称为hive-log4j.properties
    • [luo@hadoop102 conf]$ pwd
      /opt/module/hive/conf
    • [luo@hadoop102 conf]$ mv hive-log4j.properties.template hive-log4j.properties
    • 在hive-log4j.properties文件中修改log存放位置
    • hive.log.dir=/opt/module/hive/logs

参数配置方式

  • 查看当前所有的配置信息:hive>set;

  • 参数的配置三种方式及优先级

    • 配置文件方式

    • 默认配置文件:hive-default.xml
      用户自定义配置文件:hive-site.xml

      注意:用户自定义配置会覆盖默认配置。另外,Hive也会读入Hadoop的配置,因为Hive是作为Hadoop的客户端启动的,Hive的配置会覆盖Hadoop的配置。配置文件的设定对本机启动的所有Hive进程都有效。

    • 命令行参数方式

    • 启动Hive时,可以在命令行添加-hiveconf param=value来设定参数。

      例如:[luo@hadoop103 hive]$ bin/hive -hiveconf mapred.reduce.tasks=10;
      注意:仅对本次hive启动有效

      查看参数设置:hive (default)> set mapred.reduce.tasks;

    • 参数声明方式

    • 可以在HQL中使用SET关键字设定参数

      例如:hive (default)> set mapred.reduce.tasks=100;
      注意:仅对本次hive启动有效。

      查看参数设置:hive (default)> set mapred.reduce.tasks;

    上述三种设定方式的优先级依次递增。即配置文件<命令行参数<参数声明。注意某些系统级的参数,例如log4j相关的设定,必须用前两种方式设定,因为那些参数的读取在会话建立以前已经完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值