开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第32天,点击查看活动详情
第二章 Hive安装
2.1 修改hadoop相关参数
1)修改core-site.xml
[atguigu@hadoop102 hive]$ vim /opt/module/hadoop/etc/hadoop/core-site.xml
<!-- 配置该atguigu(superUser)允许通过代理访问的主机节点 -->
<property>
<name>hadoop.proxyuser.atguigu.hosts</name>
<value>*</value>
</property>
<!-- 配置该atguigu(superUser)允许通过代理用户所属组 -->
<property>
<name>hadoop.proxyuser.atguigu.groups</name>
<value>*</value>
</property>
<!-- 配置该atguigu(superUser)允许通过代理的用户-->
<property>
<name>hadoop.proxyuser.atguigu.users</name>
<value>*</value>
</property>
2)配置yarn-site.xml
[atguigu@hadoop102 hive]$ vim /opt/module/hadoop/etc/hadoop/yarn-site.xml
<!-- NodeManager使用内存数,默认8G,修改为4G内存 -->(16g物理内存的改为2g或者是3g)
<property>
<description>Amount of physical memory, in MB, that can be allocated
for containers. If set to -1 and
yarn.nodemanager.resource.detect-hardware-capabilities is true, it is
automatically calculated(in case of Windows and Linux).
In other cases, the default is 8192MB.
</description>
<name>yarn.nodemanager.resource.memory-mb</name>
<value>4096</value>
</property>
<!-- 容器最小内存,默认512M -->
<property>
<description>The minimum allocation for every container request at the RM in MBs.
Memory requests lower than this will be set to the value of this property.
Additionally, a node manager that is configured to have less memory than this value
</description>
<name>yarn.scheduler.minimum-allocation-mb</name>
<value>512</value>
</property>
<!-- 容器最大内存,默认8G,修改为4G -->
<property>
<description>The maximum allocation for every container request at the RM in MBs.
Memory requests higher than this will throw an InvalidResourceRequestException.
</description>
<name>yarn.scheduler.maximum-allocation-mb</name>
<value>4096</value>
</property>
<!-- 虚拟内存检查,默认打开,修改为关闭 -->(使用虚拟内存)
<property>
<description>Whether virtual memory limits will be enforced for containers.</description>
<name>yarn.nodemanager.vmem-check-enabled</name>
<value>false</value>
</property>
注意:修改完配置文件记得分发,然后重启集群。
2.2 Hive解压安装
1)把apache-hive-3.1.2-bin.tar.gz上传到linux的/opt/software目录下 2)将/opt/software/目录下的apache-hive-3.1.2-bin.tar.gz到/opt/module/目录下面 [atguigu@hadoop102 software] mv apache-hive-3.1.2-bin/ /opt/module/hive 4)修改/etc/profile.d/my_env.sh文件,将hive的/bin目录添加到环境变量 [atguigu@hadoop102 hive] sudo vim /etc/profile.d/my_env.sh …… #HIVE_HOME export HIVE_HOME=/opt/module/hive export PATH=PATH: source /etc/profile
2.3 Hive元数据的三种部署方式
2.3.1 元数据库之Derby
1.内嵌模式示意图:
2.Derby数据库:
Derby数据库是Java编写的内存数据库,在内嵌模式中与应用程序共享一个JVM,应用程序负责启动和停止。
3. 初始化Derby数据库
1)在hive根目录下,使用/bin目录中的schematool命令初始化hive自带的Derby元数据库
[atguigu@hadoop102 hive] mv lib/log4j-slf4j-impl-2.10.0.jar lib/log4j-slf4j-impl-2.10.0.back
4.启动Hive
1)执行/bin目录下的hive命令,就可以启动hive,并通过cli方式连接到hive
[atguigu@hadoop102 hive]$ bin/hive
2)使用Hive
hive> show databases; // 查看当前所有的数据库
OK
default
Time taken: 0.472 seconds, Fetched: 1 row(s)
hive> show tables; // 查看当前所有的表
OK
Time taken: 0.044 seconds
hive> create table test_derby(id int); // 创建表test_derby,表中只有一个字段,字段类型是int
OK
Time taken: 0.474 seconds
hive> insert into test_derby values(1001); // 向test_derby表中插入数据
Query ID = atguigu_20211018153727_586935da-100d-4d7e-8a94-063d373cc5dd
Total jobs = 3
……
Hadoop job information for Stage-1: number of mappers: 1; number of reducers: 1
……
Stage-Stage-1: Map: 1 Reduce: 1 Cumulative CPU: 6.19 sec HDFS Read: 12769 HDFS Write: 208 SUCCESS
Total MapReduce CPU Time Spent: 6 seconds 190 msec
OK
Time taken: 31.901 second
hive> select * from test_derby; // 查看test_derby表中所有数据
OK
1001
Time taken: 0.085 seconds, Fetched: 1 row(s)
hive> exit;
- 内嵌模式只有一个JVM进程 在内嵌模式下,命令行执行jps –ml命令,只能看到一个CliDriver进程。 [atguigu@hadoop102 hive]$ jps –ml 7170 sun.tools.jps.Jps -ml 6127 org.apache.hadoop.util.RunJar /opt/module/hive/lib/hive-cli-3.1.2.jar org.apache.hadoop.hive.cli.CliDriver 6.Hive自带的元数据库的问题 演示采用Derby作为元数据库的问题: 开启另一个会话窗口运行Hive,同时监控/tmp/atguigu目录中的hive.log文件,会观察到如下错误信息。 Caused by: ERROR XSDB6: Another instance of Derby may have already booted the database /opt/module/hive/metastore_db. at org.apache.derby.iapi.error.StandardException.newException(Unknown Source) at org.apache.derby.iapi.error.StandardException.newException(Unknown Source) at org.apache.derby.impl.store.raw.data.BaseDataFileFactory.privGetJBMSLockOnDB(Unknown Source) at org.apache.derby.impl.store.raw.data.BaseDataFileFactory.run(Unknown Source) ... Hive默认使用的元数据库为derby并且部署方式是内嵌式,在开启Hive之后就会独占元数据库,且不与其他客户端共享数据,如果想多窗口操作就会报错,操作比较局限。为此Hive支持采用MySQL作为元数据库,就可以支持多窗口操作。