hive的安装操作
- 第一步:修改 hadoop的 core-site.xml中, 添加以下内容:
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
注意: 如果发现没有配置, 请将其添加到core-site.xml中, 添加后, 记得发给其他节点
- 第二步: 上传hive的安装包到node1的节点, 并解压
cd /export/software/
rz 上传即可
说明: 如果提示 -bash: rz: 未找到命令 请执行以下命令安装即可:
yum -y install lrzsz
执行解压:
tar -zxf apache-hive-3.1.2-bin.tar.gz -C /export/server/
cd /export/server
mv apache-hive-3.1.2-bin/ hive-3.1.2
- 第三步: 修改 hive的环境配置文件: hive-env.sh
cd /export/server/hive-3.1.2/conf
cp hive-env.sh.template hive-env.sh
vim hive-env.sh
输入 i
修改一下内容:
HADOOP_HOME=/export/server/hadoop-3.3.0/
export HIVE_CONF_DIR=/export/server/hive-3.1.2/conf/
export HIVE_AUX_JARS_PATH=/export/server/hive-3.1.2/lib/
配置后保存退出即可:
esc
:wq
- 第四步: 添加一个hive的核心配置文件: hive-site.xml
cd /export/server/hive-3.1.2/conf
vim hive-site.xml
输入i
添加以下内容:
<configuration>
<!-- 存储元数据mysql相关配置 -->
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://node2:3306/hive3?createDatabaseIfNotExist=true&useSSL=false</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hadoop</value>
</property>
<!-- H2S运行绑定host -->
<property>
<name>hive.server2.thrift.bind.host</name>
<value>node2</value>
</property>
<!-- 远程模式部署metastore metastore地址 -->
<property>
<name>hive.metastore.uris</name>
<value>thrift://node2:9083</value>
</property>
<!-- 关闭元数据存储授权 -->
<property>
<name>hive.metastore.event.db.notification.api.auth</name>
<value>false</value>
</property>
</configuration>
添加后, 保存退出即可:
esc
:wq
- 第五步: 上传mysql的驱动包到hive的lib目录下
cd /export/server/hive-3.1.2/lib
rz 上传即可
上传后, 校验是否已经上传到lib目录下
- 第六步: 解决Hive与Hadoop之间guava版本差异
cd /export/server/hive-3.1.2/
rm -rf lib/guava-19.0.jar
cp /export/server/hadoop-3.3.0/share/hadoop/common/lib/guava-27.0-jre.jar ./lib/
如果此步没有执行, 可能会报出如下错误:
cd /export/server/hive-3.1.2/
bin/schematool -initSchema -dbType mysql -verbos
执行完成后, 可以看到在mysql的hive3的数据库中, 会产生74张元数据表
可能出现的错误:
root @ node1 (passwd no) 类似于这样的一个错误
出现的原因: 由于mysql的密码不对导致的
在mysql的 mysql数据库中有一个user表, 打开user表后, 找到password, 将 Host为%的password的免密内容拷贝到其他行中, 保证大家都一样即可
拷贝后, 如下图, 然后就可以在Linux中重启mysql
重启命令:
service mysqld restart
或者
service mysql restart
或者
systemctl restart mysqld.service
或者
systemctl restart mysql.service
hdfs dfs -mkdir /tmp
hdfs dfs fs -mkdir -p /user/hive/warehouse
hdfs dfs -chmod g+w /tmp
hdfs dfs -chmod g+w /user/hive/warehouse
如何启动
第一步: 先启动hadoop集群
启动命令:
node1执行 start-all.sh
启动后, 要确保hadoop是启动良好的
首先通过jps分别查看每一个节点:
在node1节点:
namenode
datanode
resourcemanager
nodemanager
在node2节点:
SecondaryNameNode
datanode
nodemanager
在node3节点:
datanode
nodemanager
接着通过浏览器, 访问 node1:9870 查看 安全模式是否退出以及是否有3个datanode
最后,通过浏览器,访问 node1:8088 查看是否有三个激活节点
- 第二步: 启动 hive的服务: metastore
先启动metastore服务项:
前台启动:
cd /export/server/hive-3.1.2/bin
./hive --service metastore
注意: 前台启动后, 会一直占用前台界面, 无法进行操作
好处: 一般先通过前台启动, 观察metastore服务是否启动良好
前台退出: ctrl + c
后台启动:
当前台启动没有任何问题的时候, 可以将其退出, 然后通过后台启动, 挂载后台服务即可
cd /export/server/hive-3.1.2/bin
nohup ./hive --service metastore &
启动后, 通过 jps查看, 是否出现一个runjar 如果出现 说明没有问题(建议搁一分钟左右, 进行二次校验)
注意: 如果失败了, 通过前台启动, 观察启动日志, 看一下是什么问题, 尝试解决
后台如何退出:
通过 jps 查看进程id 然后采用 kill -9
- 第三步: 启动hive的服务: hiveserver2服务
接着启动hiveserver2服务项:
前台启动:
cd /export/server/hive-3.1.2/bin
./hive --service hiveserver2
注意: 前台启动后, 会一直占用前台界面, 无法进行操作
好处: 一般先通过前台启动, 观察hiveserver2服务是否启动良好
前台退出: ctrl + c
后台启动:
当前台启动没有任何问题的时候, 可以将其退出, 然后通过后台启动, 挂载后台服务即可
cd /export/server/hive-3.1.2/bin
nohup ./hive --service hiveserver2 &
启动后, 通过 jps查看, 是否出现一个runjar 如果出现 说明没有问题(建议搁一分钟左右, 进行二次校验)
注意: 如果失败了, 通过前台启动, 观察启动日志, 看一下是什么问题, 尝试解决
后台如何退出:
通过 jps 查看进程id 然后采用 kill -9
如何连接
cd /export/server/hive-3.1.2/bin
./beeline --进入beeline客户端
连接hive:
!connect jdbc:hive2://node1:10000
接着输入用户名: root
最后输入密码: 无所谓(一般写的都是虚拟机的登录密码)
1) 将node1的hive的安装目录发送给需要远程连接的节点
cd /export/server/
scp -r hive-3.1.2/ node2:$PWD
scp -r hive-3.1.2/ node3:$PWD
2) 比如 使用 node2连接node1的hive服务
以下操作是在node2执行的:
cd /export/server/hive-3.1.2/bin
./beeline
连接hive:
!connect jdbc:hive2://node1:10000
接着输入用户名: root
最后输入密码: 无所谓(一般写的都是虚拟机的登录密码)
其他节点连接也是雷同的
请注意注意注意:
一定一定一定不要在node2和node3启动hive服务
hive的可以将hdfs的中结构化的文件数据在hive中映射称为一个表, 然后可以通过类SQL的方式进行查询处理
结构化数据:
这个文件中数据具有相同列, 每一列的数据类型都是固定的, 类似于 mysql的表
半结构化数据:
文件中数据每一行都是有一定的格式, 但是每一行的格式格式可能会不同, 将这种数据称为半结构化数据, 类似于 xml文档, html
非结构化数据: 数据本身没有任何结构, 比如文本数据, 或者视频数据,图片...
create table stu2(
sid int,
sname string,
age int
) row format delimited fields terminated by ',' ;
未完待续···················
|