hive安装和部署
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
前提准备
1.服务器的基础环境
集群时间同步、防火墙关闭、主机Host映射、免密登录、JDK安装
都准备完毕拍摄快照
Hadoop集群健康可用
Hadoop集群健康可用
启动Hive之前必须先启动Hadoop集群。特别要注意,需等待HDFS安全模式关闭之后再启动运行ive。
Hive不是分布式安装运行的软件,其分布式的特性主要借由Hadoop完成。包括分布式存储、分布式计算。
配置Hive操作Hadoop权限
vi /opt/apps/hadoop-3.1.1/etc/hadoop/core-site.xml
<property>
<name>dfs.permissions.enabled</name>
<value>false</value>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
3.MySQL数据库准备
因为我们使用远程连接模式,要把元数据存储到Mysql中.所以需要安装mysql并开启远程连接权限.
Mysql安装我们已经安装完毕,没有安装详情参照Linux02课件.
这里直接开启远程权限
1.登录 mysql -uroot -proot
2.在mysql中设置允许简单密码
set global validate_password_policy=0;
set global validate_password_length=1;
3.开放远程连接权限
grant all privileges on *.* to 'root'@'%' identified by 'root' with grant option;
此时远程连接密码是root
4.刷新权限
flush privileges;
2.3 上传解压
将资料中的apache-hive-3.1.2.tar.gz上传到linux01的/opt/apps文件夹 可以使用rz命令或者xftp工具
上传后进入到apps文件夹 进行解压
tar -zxvf apache-hive-3.1.2.tar.gz
解压后名称比较长 我们简单修改一下
mv apache-hive-3.1.2 hive-3.1.2
如果hadoop版本比较高需要解决Hadoop和hive中guava版本差异(我们用的hadoop版本是3.1.1不需要修改)
在hive的lib文件夹下 guava的jar包版本是19.0
而高版本的的hadoop的/opt/apps/hadoop-3.1.1/share/hadoop/common/lib
下的guava包是27.0
可以删除hive下的guava 将hadoop的复制过来
2.4 配置
配置hive系统环境变量 让Hive命令可以在任意位置运行
vi /etc/profile
export JAVA_HOME=/opt/apps/jdk1.8.0_191
export HADOOP_HOME=/opt/apps/hadoop-3.1.1
export HIVE_HOME=/opt/apps/hive-3.1.2
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$HIVE_HOME/bin
添加完毕后别忘记
source /etc/profile
远程模式
具体配置
1.修改Hive环境变量文件 添加Hadoop_HOME
#进入到hive下的conf文件夹
cd /opt/apps/hive-3.1.2/conf
#将hive环境变量文件模版 改为可用文件
mv hive-env.sh.template hive-env.sh
#在最后添加Hadoop_Home
export HADOOP_HOME=/opt/apps/hadoop-3.1.1
export HIVE_CONF_DIR=/opt/apps/hive-3.1.2/conf
export HIVE_AUX_JARS_PATH=/opt/apps/hive-3.1.2/lib
shift: set nu 将第40行注释打开(40 + shift G)
export HADOOP_HEAPSIZE=1024
2.创建Hive的核心配置文件 进行配置
在hive下的conf文件夹下 直接vi一个hive-site.xml
vi hive-site.xml
<configuration>
<!-- 记录hive中的元数据信息 记录在mysql中 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://linux01:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<!-- mysql的用户名和密码 -->
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
</property>
<!-- hive在HDFS上的工作目录 -->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>/user/hive/tmp</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/user/hive/log</value>
</property>
<!-- 客户端远程连接的端口 -->
<property>
<name>hive.server2.thrift.port</name>
<value>10000</value>
</property>
<property>
<name>hive.server2.thrift.bind.host</name>
<value>linux01</value>
</property>
<!-- hive服务的页面的端口 -->
<property>
<name>hive.server2.webui.port</name>
<value>10002</value>
</property>
<property>
<name>hive.server2.long.polling.timeout</name>
<value>5000</value>
</property>
<property>
<name>hive.server2.enable.doAs</name>
<value>true</value>
</property>
<property>
<name>datanucleus.autoCreateSchema</name>
<value>false</value>
</property>
<property>
<name>datanucleus.fixedDatastore</name>
<value>true</value>
</property>
<property>
<name>hive.execution.engine</name>
<value>mr</value>
</property>
<!--关闭元数据授权-->
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
<!--关闭元数据存储版本的验证-->
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<!-- 添加元数据服务配置 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://linux01:9083</value>
</property>
</configuration>
上传MySQL驱动包放入到Hive的lib文件夹下
Hive的lib包中默认没有mysql驱动的jar包.我们需要上传一个mysql的jdbc驱动jar包放入到hive的lib下.
cd /opt/apps/hive-3.1.2/lib
使用rz命令上传我们之前用过的jdbc的jar包即可
hive初始化
将hive的原数据信息初始化到mysql中 用的是hive下bin中的schematool命令 我们配置了环境变量可以直接使用.
schematool -initSchema -dbType mysql
最后出现 completed初始化成功
Initialization script completed
schemaTool completed
启动元数据服务
nohup hive --service metastore 1>/dev/null 2>1 &
这种方式将 启动日志 写入到黑洞 不显示任何内容
/dev/null :代表空设备文件
> :代表重定向到哪里,例如:echo "123" > /home/123.txt
1 :表示stdout标准输出,系统默认值是1,所以">/dev/null"等同于"1>/dev/null"
2 :表示stderr标准错误输出
& :表示等同于的意思,2>&1,表示2的输出重定向等同于1
检查启动额端口
netstat -nltp | grep 9083 端口存在说明元数据服务启动成功