小编给大家分享一下Hive如何安装,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
1)Hive官网地址 http://hive.apache.org/
2)文档查看地址 https://cwiki.apache.org/confluence/display/Hive/GettingStarted
3)下载地址 http://archive.apache.org/dist/hive/
4)github地址 https://github.com/apache/hive
#rpm -qa查询 | -ivh安装 | -e --nodeps卸载(不检查依赖) rpm -qa|grep mariadb --> mariadb-libs-5.5.56-2.el7.x86_64 --如果存在通过如下命令卸载 sudo rpm -e --nodeps mariadb-libs
#必须按照如下顺序依次安装 #MySQl运行环境 sudo rpm -ivh mysql-community-common-5.7.28-1.el7.x86_64.rpm #MySQL运行jar包 sudo rpm -ivh mysql-community-libs-5.7.28-1.el7.x86_64.rpm #MySQL扩展jar包 sudo rpm -ivh mysql-community-libs-compat-5.7.28-1.el7.x86_64.rpm #MySQL客户端 sudo rpm -ivh mysql-community-client-5.7.28-1.el7.x86_64.rpm #MySQL服务器 sudo rpm -ivh mysql-community-server-5.7.28-1.el7.x86_64.rpm
#查看datadir路径 cat /etc/my.cnf --> datadir=/var/lib/mysql #清空路径目录下内容 sudo rm -rf /var/lib/mysql
sudo mysqld --initialize --user=mysql
#启动mysql服务 sudo systemctl start mysqld sudo systemctl status mysqld #查看临时密码 sudo cat /var/log/mysqld.log #登录数据库 mysql -uroot -p(换行中输入临时密码) #更改密码策略 set global validate_password_length=4; set global validate_password_policy=0; #修改登录密码 set password = password('123456') #修改mysql库下的user表中的root用户允许任意ip连接 updata mysql.user set host="%" where user="root" #刷新数据库 flush privileges
1)把apache-hive-3.1.2-bin.tar.gz上传到linux的/opt/software目录下 2)解压apache-hive-3.1.2-bin.tar.gz到/opt/module/目录下面 --tar -zxvf /opt/software/apache-hive-3.1.2-bin.tar.gz -C /opt/module/ 3)修改apache-hive-3.1.2-bin.tar.gz的名称为hive --mv /opt/module/apache-hive-3.1.2-bin/ /opt/module/hive 4)修改/etc/profile.d/my_env.sh,添加环境变量 --sudo vim /etc/profile.d/my_env.sh 5)添加内容 #HIVE_HOME export HIVE_HOME=/opt/module/hive export PATH=$PATH:$HIVE_HOME/bin 6)解决日志Jar包冲突 --mv $HIVE_HOME/lib/log4j2-slf4j-impl-2.10.0.jar $HIVE_HOME/lib/log4j2-slf4j-impl-2.10.0.bak
#1.将MySQL的JDBC驱动放置在Hive的lib目录下 cp /opt/software/mysql-connector-java-5.1.37.jar $HIVE_HOME/lib #2.配置Metastore到MySQL vim /opt/module/hive/conf/hive-site.xml
<?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="configuration.xsl"?> <configuration> <!-- jdbc连接的URL --> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false</value> </property> <!-- jdbc连接的Driver--> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <!-- jdbc连接的username--> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <!-- jdbc连接的password --> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>123456</value> </property> <!-- Hive默认在HDFS的工作目录 --> <property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> </property> <!-- 指定hiveserver2连接的端口号 --> <property> <name>hive.server2.thrift.port</name> <value>10000</value> </property> <!-- 指定hiveserver2连接的host --> <property> <name>hive.server2.thrift.bind.host</name> <value>hadoop102</value> </property> <!-- 指定存储元数据要连接的地址 --> <property> <name>hive.metastore.uris</name> <value>thrift://hadoop102:9083</value> </property> <!-- 元数据存储授权 hive默认不允许去外部存储,所以得关闭授权--> <property> <name>hive.metastore.event.db.notification.api.auth</name> <value>false</value> </property> <!-- Hive元数据存储版本的验证--> <property> <name>hive.metastore.schema.verification</name> <value>false</value> </property> <!-- hiveserver2的高可用参数,开启此参数可以提高hiveserver2的启动速度 --> <property> <name>hive.server2.active.passive.ha.enable</name> <value>true</value> </property> </configuration>
#登录MySQL 创建元数据库 create database metastore #退出MySQL 初始化元数据 schematool -initSchema -dbType mysql -verbose
#启动元数据服务(前台服务,连接mysql获取元数据) hive --service metastore #启动hiveserver2服务(前台服务,jdbc连接服务) hive --service hiveserver2 #——0 标准输入 ——1 标准输出 ——2 错误输出 -->& 将一个句柄的输出写入到另一个句柄的输入中。 #——nohup: 命令开头,表示不挂起,也就是关闭终端进程也继续保持运行状态 ——&: 命令结尾,表示后台运行 nohup hive --service metastore>log.txt 2>&1 & nohup hive --service hiveserver2>log2.txt 2>&1 &
#!/bin/bash HIVE_LOG_DIR=$HIVE_HOME/logs if [ ! -d $HIVE_LOG_DIR ] then mkdir -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) cmd="nohup hive --service metastore >$HIVE_LOG_DIR/metastore.log 2>&1 &" cmd=$cmd" sleep 4; hdfs dfsadmin -safemode wait >/dev/null 2>&1" [ -z "$metapid" ] && eval $cmd || echo "Metastroe服务已启动" server2pid=$(check_process HiveServer2 10000) cmd="nohup hive --service hiveserver2 >$HIVE_LOG_DIR/hiveServer2.log 2>&1 &" [ -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_stop sleep 2 hive_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
#1.Hive启动 bin/hive #打印当前库与表头需配置hive-site.xml <property> <name>hive.cli.print.header</name> <value>true</value> <description>Whether to print the names of the columns in query output.</description> </property> <property> <name>hive.cli.print.current.db</name> <value>true</value> <description>Whether to include the current database in the Hive prompt.</description> </property> #2.JDBC启动 beeline -u jdbc:hive2://hadoop102:10000 -n luck
#查看所有命令 bin/hive -help #1. hive -e 不进入hive窗口执行sql语句 bin/hive -e "select id from student;" #2. hive -f 执行脚本中的sql语句 echo "select * from student" >> sql.txt bin/hive -f /opt/module/hive/datas/sql.txt > /opt/module/datas/hive_result.txt #3.hive中查看hdfs文件系统 hive > dfs -ls #4.hive输入历史 /home/luck/. hivehistory /home/luck/.beeline/history
#1.hive日志存储位置 #修改hive-log4j.properties.template为hive-log4j.properties property.hive.log.dir=/opt/module/hive/logs #2.JVM堆内存设置 #修改hive-env.sh.template为hive-env.sh export HADOOP_HEAPSIZE=1024 #3.参数配置的优先级 #3.1 配置文件(永久) #Hadoop配置文件-->默认配置文件:hive-default.xml-->用户自定义配置文件:hive-site.xml #3.2 命令行参数(hive启动前,仅对本次hive有效) beeline -u jdbc:hive2://hadoop102:10000 -n luck -hiveconf mapreduce.job.reduces=10; #3.3 参数声明(hive启动后,仅对本次hive有效) hive (default)> set mapreduce.job.reduces=10; #优先级:参数声明>命令行参数>配置文件
以上是“Hive如何安装”这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注亿速云行业资讯频道!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。