大连智能模板建站,如何搜索asp网站,长沙做网站建设的,怎么制作网站视频教程目录 1 安装 MySql2 安装 Hive3 Hive 元数据配置到 MySql4 启动 Hive5 Hive 常用交互命令6 Hive 常见属性配置 Hive 官网 1 安装 MySql 为什么需要安装 MySql? 原因在于Hive 默认使用的元数据库为 derby#xff0c;开启 Hive 之后就会占用元数据库#xff0c;且不与其他客户… 目录 1 安装 MySql2 安装 Hive3 Hive 元数据配置到 MySql4 启动 Hive5 Hive 常用交互命令6 Hive 常见属性配置 Hive 官网 1 安装 MySql 为什么需要安装 MySql? 原因在于Hive 默认使用的元数据库为 derby开启 Hive 之后就会占用元数据库且不与其他客户端共享数据如果想多窗口操作就会报错操作比较局限。以我们需要将Hive 的元数据地址改为 MySql可支持多窗口操作。 1检查当前系统是否安装过 Mysql如果有则删除
[huweihadoop101 ~]$ rpm -qa|grep mariadb
mariadb-libs-5.5.56-2.el7.x86_64
[huweihadoop101 ~]$ sudo rpm -e --nodeps mariadb-libsrpm -qa 用于列出系统中已安装的所有软件包的名称CentOS 6系统自带的数据库 MySqlCentOS 7系统自带的数据库是 mariadb本质上就是 MySQL根据自己的系统来确定。 2将 MySql 安装包拷贝到 /opt/software 目录下
3解压 MySql 安装包
新建 mysql_rpm 文件夹并将MySQL 安装包中的文件解压在此处
[huweihadoop101 software]$ mkdir mysql_rpm
[huweihadoop101 software]$ tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar -C ./mysql_rpm/注意mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar没有以gz结尾不是压缩文件 4在安装目录下执行 rpm 安装 注意按照 顺序 依次执行 [huweihadoop101 mysql_rpm]$ sudo rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm
[huweihadoop101 mysql_rpm]$ sudo rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm
[huweihadoop101 mysql_rpm]$ sudo rpm -ivh mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm
[huweihadoop101 mysql_rpm]$ sudo rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm
[huweihadoop101 mysql_rpm]$ sudo rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm5初始化数据库
[huweihadoop101 mysql_rpm]$ sudo mysqld --initialize --usermysql6查看临时生成的 root 用户的密码
[huweihadoop101 mysql_rpm]$ sudo cat /var/log/mysqld.log复制保存临时密码
7启动 MySql 服务
[huweihadoop101 mysql_rpm]$ sudo systemctl start mysqld8登录 MySql 数据库
[huweihadoop101 mysql_rpm]$ mysql -uroot -p不建议直接在-p后直接输入密码因为临时密码中可能含有一些特殊字符shell 可能会把这些特殊字符解析导致出问题 9必须先修改 root 用户的密码否则执行其他的操作会报错
这里我将 root 用户的密码改为 root
mysql set password password(root);10修改 mysql 库下的 user 表中的 root 用户允许任意 ip 连接 此时我是在主机 hadoop101 上安装的 MySQL如果我想在主机 hadoop102 上登录MySQL是登录不上的 mysql update mysql.user set host% where userroot;
mysql flush privileges;退出 MySQL 数据库
mysql exit;2 安装 Hive 1把 apache-hive-3.1.2-bin.tar.gz上传到 linux 的 /opt/software 目录下
2解压 apache-hive-3.1.2-bin.tar.gz 到 /opt/module/ 目录下面
[huweihadoop101 software]$ tar -zxvf /opt/software/apache-hive-3.1.2-bin.tar.gz -C /opt/module/3修改 apache-hive-3.1.2-bin 的名称为 hive-3.1.2
[huweihadoop101 software]$ cd ../module/
[huweihadoop101 module]$ mv apache-hive-3.1.2-bin/ hive-3.1.24修改 /etc/profile.d/my_env.sh添加环境变量
[huweihadoop101 module]$ sudo vim /etc/profile.d/my_env.sh添加如下内容
# HIVE_HOME
export HIVE_HOME/opt/module/hive-3.1.2
export PATH$PATH:$HIVE_HOME/bin使环境变量生效
[huweihadoop101 module]$ source /etc/profile5解决日志Jar包冲突
[huweihadoop101 module]$ cd hive-3.1.2/lib/
[huweihadoop101 module]$ llhive 工作时底层是基于 hadoop 的hadoop 里也有日志的 jar 包二者可能会有冲突将 hive 中的 log4j-slf4j-impl-2.10.0.jar删除在hive运行时直接使用 hadoop 提供的日志 jar 包。 [huweihadoop101 lib]$ rm -rf log4j-slf4j-impl-2.10.0.jar3 Hive 元数据配置到 MySql 1在 $HIVE_HOME/conf目录下新建 hive-site.xml 文件
[huweihadoop101 ~]$ vim $HIVE_HOME/conf/hive-site.xml添加如下内容
?xml version1.0?
?xml-stylesheet typetext/xsl hrefconfiguration.xsl?
configuration!-- jdbc连接的URL --propertynamejavax.jdo.option.ConnectionURL/namevaluejdbc:mysql://hadoop101:3306/metastore?useSSLfalse/value
/property!-- jdbc连接的Driver--propertynamejavax.jdo.option.ConnectionDriverName/namevaluecom.mysql.jdbc.Driver/value
/property!-- jdbc连接的username--propertynamejavax.jdo.option.ConnectionUserName/namevalueroot/value/property!-- jdbc连接的password --propertynamejavax.jdo.option.ConnectionPassword/namevalueroot/value
/property!-- Hive默认在HDFS的工作目录 --propertynamehive.metastore.warehouse.dir/namevalue/user/hive/warehouse/value/property!-- Hive元数据存储的验证 --propertynamehive.metastore.schema.verification/namevaluefalse/value/property!-- 元数据存储授权 --propertynamehive.metastore.event.db.notification.api.auth/namevaluefalse/value/property
/configuration2拷贝驱动
上传 JDBC 驱动至/opt/software/ 然后将 MySql 的 JDBC 驱动拷贝到 Hive 的 lib 目录下
[huweihadoop101 software]$ cp /opt/software/mysql-connector-java-5.1.37.jar $HIVE_HOME/lib3初始化元数据库
登录 mysql
[huweihadoop101 ~]$ mysql -uroot -proot由于在 hive-site.xml 文件中指定了存放元数据的数据库 metastore
所以新建 Hive 元数据库 metastore
mysql create database metastore;
Query OK, 1 row affected (0.01 sec)mysql quit;
Bye初始化 Hive 元数据库
[huweihadoop101 ~]$ schematool -initSchema -dbType mysql -verbose4 启动 Hive 1启动 hadoop 集群
[huweihadoop101 ~]$ hdp_cluster.sh start从下面三种启动方式中选择一种即可 3普通方式启动 hive
[huweihadoop101 ~]$ hive4元数据服务方式启动 hive hive的元数据是存在 MySql 里的如果不使用元数据服务的话hive直接会操作MySql里的元数据使用元数据服务的话hive会操作元数据服务元数据服务再去操作 MySql 里的元数据 ① 在 hive-site.xml 文件中添加如下配置信息
[huweihadoop101 ~]$ cd /opt/module/hive-3.1.2/conf
[huweihadoop101 conf]$ vim hive-site.xml!-- 指定存储元数据要连接的地址 --propertynamehive.metastore.uris/namevaluethrift://hadoop101:9083/value/property② 启动 metastore
[huweihadoop101 ~]$ hive --service metastore③ 新开启一个窗口启动 hive
[huweihadoop101 ~]$ hive5JDBC 方式启动 hive 普通方式启动 hive是直连的而该方式则是通过 hiveserver2 再去连接 hive 的 ① 在 hive-site.xml 文件中添加如下配置信息
[huweihadoop101 ~]$ cd /opt/module/hive-3.1.2/conf
[huweihadoop101 conf]$ vim hive-site.xml!-- 指定hiveserver2连接的host --propertynamehive.server2.thrift.bind.host/namevaluehadoop101/value/property!-- 指定hiveserver2连接的端口号 --propertynamehive.server2.thrift.port/namevalue10000/value/property② 启动 hiveserver2
[huweihadoop101 ~]$ hive --service hiveserver2③ 新开启一个窗口启动 beeline 客户端
[huweihadoop101 conf]$ beeline -u jdbc:hive2://hadoop101:10000 -n huwei注意-n后跟的是当前的用户名 6使用 hive
hive show databases;
hive show tables;
hive create table test (id int);
hive insert into test values(1);
hive select * from test;7编写启动 metastore 和 hiveserver2 脚本
前面第2、3种启动的方式导致需要打开多个 shell 窗口编写启动 metastore 和 hiveserver2 脚本
[huweihadoop101 ~]$ cd bin
[huweihadoop101 bin]$ vim hiveservice.sh#!/bin/bash
HIVE_LOG_DIR$HIVE_HOME/logs
if [ ! -d $HIVE_LOG_DIR ]
thenmkdir -p $HIVE_LOG_DIR
fi
#检查进程是否运行正常参数1为进程名参数2为进程端口
function check_process()
{pid$(ps -ef 2/dev/null | grep -v grep | grep -i $1 | awk {print $2})ppid$(netstat -nltp 2/dev/null | grep $2 | awk {print $7} | cut -d / -f 1)echo $pid[[ $pid ~ $ppid ]] [ $ppid ] return 0 || return 1
}function hive_start()
{metapid$(check_process HiveMetastore 9083)cmdnohup hive --service metastore $HIVE_LOG_DIR/metastore.log 21 cmd$cmd sleep 4; hdfs dfsadmin -safemode wait /dev/null 21[ -z $metapid ] eval $cmd || echo Metastroe服务已启动server2pid$(check_process HiveServer2 10000)cmdnohup hive --service hiveserver2 $HIVE_LOG_DIR/hiveServer2.log 21 [ -z $server2pid ] eval $cmd || echo HiveServer2服务已启动
}function hive_stop()
{metapid$(check_process HiveMetastore 9083)[ $metapid ] kill $metapid || echo Metastore服务未启动server2pid$(check_process HiveServer2 10000)[ $server2pid ] kill $server2pid || echo HiveServer2服务未启动
}case $1 in
start)hive_start;;
stop)hive_stop;;
restart)hive_stopsleep 2hive_start;;
status)check_process HiveMetastore 9083 /dev/null echo Metastore服务运行正常 || echo Metastore服务运行异常check_process HiveServer2 10000 /dev/null echo HiveServer2服务运行正常 || echo HiveServer2服务运行异常;;
*)echo Invalid Args!echo Usage: $(basename $0) start|stop|restart|status;;
esac添加执行权限
[huweihadoop101 bin]$ chmod ux hiveservice.sh启动服务
[huweihadoop101 bin]$ hiveservice.sh start此时我们发现有两个 RunJar 进程就是hive服务进程了
5 Hive 常用交互命令 1-e进入 hive 的交互窗口执行 sql 语句
首先进入hive 的交互窗口新建表并插入内容
hive create table mytbl (id int,name string);
hive insert into mytbl values(1001,zhangsan);退出hive 的交互窗口
[huweihadoop101 ~]$ hive -e select * from mytbl;2-f执行脚本中 sql 语句
在 /opt/module/hive/下创建 datas 目录并在该目录下创建 hivef.sql 文件
[huweihadoop101 ~]$ cd /opt/module/hive-3.1.2/
[huweihadoop101 hive-3.1.2]$ mkdir datas
[huweihadoop101 hive-3.1.2]$ cd datas/
[huweihadoop101 datas]$ touch hivef.sql
[huweihadoop101 datas]$ vim hivef.sql在文件中编写 sql 语句
select * from mytbl;执行脚本文件中的 sql 语句
[huweihadoop101 datas]$ hive -f /opt/module/hive-3.1.2/datas/hivef.sql3退出 hive 窗口
hive quit;
hive exit;如果是以 jdbc 方式开启 hive则!quit;退出 4在 hive 命令窗口中查看 hdfs文件系统
hive dfs -ls /;还可以在 hive 命令窗口中查看 linux 文件系统!ls /;但这都很少用 5查看在 hive 中输入的所有历史命令
[huweihadoop101 datas]$ cd ~
[huweihadoop101 ~]$ cat .hivehistory6 Hive 常见属性配置 1Hive 窗口打印默认库和表头
[huweihadoop101 ~]$ cd /opt/module/hive-3.1.2/conf/
[huweihadoop101 conf]$ vim hive-site.xml添加如下内容 propertynamehive.cli.print.header/namevaluetrue/value/propertypropertynamehive.cli.print.current.db/namevaluetrue/value/property2Hive 运行日志信息配置 Hive 的 log 默认存放在 /tmp/atguigu/hive.log 目录下当前用户名下修改 hive 的 log存放日志到 /opt/module/hive-3.1.2/logs下 修改 /opt/module/hive-3.1.2/conf/hive-log4j2.properties.template文件名称为 hive-log4j2.properties
[huweihadoop101 conf]$ mv hive-log4j2.properties.template hive-log4j2.properties在 hive-log4j.properties 文件中修改 log 存放位置
[huweihadoop101 conf]$ vim hive-log4j2.properties3参数配置方式
查看当前所有的配置信息
hive (default) set;① 配置文件方式
默认配置文件hive-default.xml用户自定义配置文件hive-site.xml 注意用户自定义配置会覆盖默认配置。另外Hive也会读入Hadoop的配置因为Hive是作为Hadoop的客户端启动的Hive的配置会覆盖Hadoop的配置。配置文件的设定对本机启动的所有Hive进程都有效。 ② 命令行参数方式
启动 Hive 时可以在命令行添加 -hiveconf paramvalue 来设定参数。
[huweihadoop101 ~]$ hive -hiveconf mapred.reduce.tasks10;注意仅对本次hive启动有效 查看参数设置
hive (default) set mapred.reduce.tasks;③ 参数声明方式
可以在 HQL 中使用 SET 关键字设定参数
hive (default) set mapred.reduce.tasks100;注意仅对本次hive启动有效 查看参数设置
hive (default) set mapred.reduce.tasks;上述三种设定方式的优先级依次递增。即配置文件命令行参数参数声明。注意某些系统级的参数例如 log4j 相关的设定必须用前两种方式设定因为那些参数的读取在会话建立以前已经完成了。