怎么申请一个网站,wordpress英文版语言包,网站建设招标需求,设计精美的国外网站目录 1 安装 MySql2 安装 Hive3 Hive 元数据配置到 MySql4 启动 Hive Hive 官网 1 安装 MySql 为什么需要安装 MySql? 原因在于Hive 默认使用的元数据库为 derby#xff0c;开启 Hive 之后就会占用元数据库#xff0c;且不与其他客户端共享数据#xff0c;如果想多窗口操作… 目录 1 安装 MySql2 安装 Hive3 Hive 元数据配置到 MySql4 启动 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-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服务进程了