Hive单节点和多节点的配置安装
1.Hive简介
hive是基于Hadoop的一个数据仓库工具,可以将结构化(行列分明)或半结构化(xml、json等)的数据文件映射为一张数据库表,并提供简单的sql查询,本质是将sql转换为MapReduce的任务进行运算,底层由HDFS提供存储,有执行延迟高、可扩展性高、数据规模大的特点。
2.单节点配置安装
Hive的安装需要Hadoop环境和mysql环境,需要如下步骤:
2.1 下载上传解压
http://archive.apache.org/dist/hive/
2.1.1 解压hive挪动位置并修改名称
2.1.1.1 执行解压指令 tar -zxvf apache.hive-3.1.2-bin.tar.gz
2.1.1.2 移动到opt目录下 mv apache.hive-3.1.2-bin /opt/
2.1.1.3 进入opt目录修改hive的名字 mv apache.hive-3.1.2-bin hive-3.1.2
2.2 修改env配置文件中的环境变量
2.2.1 进入hive的进行配置文件的修改 cd hive-3.1.2/conf
2.2.2 拷贝env文件并修改配置 cp hive-env.sh.template hive-env.sh
2.2.3 修改hive-env.sh中的配置,将光标挪到最后一行,将下面的配置信息复制进去
hive.env.sh是启动hive的时候会重新加载并获取里面的这三个环境变量,第一个是hadoop的位置,第二个是hive的配置文件位置,第三个是hive的jar位置,这个是在3.0之后需要进行配置,3.0之前不需要进行配置。
HADOOP_HOME=/opt/hadoop-3.1.2/
export HIVE_CONF_DIR=/opt/hive-3.1.2/conf
export HIVE_AUX_JARS_PATH=/opt/hive-3.1.2/lib
2.3 修改hive-site配置文件(配置mysql的对应信息)
2.3.1 拷贝默认的hive-site文件 cp hive-default.xml.template hive-site.xml
2.3.2 修改配置文件
其中createDatabaseIfNotExist=true是如果mysql中的hive数据库不存在就创建数据库和对应表
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
</property>
<!--mysql的驱动-->
<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>123456</value>
</property>
<property>
<name>datanucleus.schema.autoCreateAll</name>
<value>true</value>
</property>
<!--元数据验证取消掉-->
<property>
<name>hive.metastore.schema.verification</name>
<value>false</value>
</property>
<!--美化打印语句-->
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
<!--下面配置根据情况看是否需要 不要就去掉-->
<!--配置hive server2是在哪台虚拟机上开启-->
<property>
<name>hive.server2.webui.host</name>
<value>node001</value>
</property>
<!--配置hive server2是在外部页面的端口号-->
<property>
<name>hive.server2.webui.port</name>
<value>10002</value>
</property>
<!--配置hive默认存储的位置-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/hive/warehouse</value>
</property>
</configuration>
2.4 修改hadoop中的core-site.xml配置文件
2.4.1 vim /opt/hadoop-3.1.2/etc/hadoop/core-site.xml
2.4.2 将如下信息添加到core-site.xml的最后
<!--该参数标识可以通过httpfs接口访问hdfs的ip地址的限制-->
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<!--通过httpfs接口访问的用户获得的群组身份-->
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
2.5 配置日志组件
2.5.1 创建日志目录 mkdir -p /opt/hive-3.1.2/logs
2.5.2 拷贝默认文件 cp hive-log4j2.properties.template hive-log4j2.properties
2.5.3 修改日志配置文件 vim hive-log4j2.properties中日志的位置,如下:
property.hive.log.dir = /opt/hive-3.1.2/logs
2.6 添加驱动包
2.6.1 拷贝mysql驱动包到hive中的lib里
cp ~/mysql-connector-java-5.1.32-bin.jar /opt/hive-3.1.2/lib
2.6.2 将hadoop和hdfs中的Guava包删除,并将hive中的Guava包复制到hadoop和hdfs中去
2.6.3 查询guava包在hive下是19.0,hadoop和hdfs中是11.0.2
2.6.4 将hadoop和hdfs中的Guava包删除,并将hive中的Guava包复制到hadoop和hdfs中去
2.7 配置环境变量
2.7.1 进入profile配置文件 vim /etc/profile
export HIVE_HOME=/opt/hive-3.1.2
export PATH=$HIVE_HOME/bin:$PATH
2.7.2 输入指令 source /etc/profile
此时一台节点的hive已经配置好了。。。
3.多节点配置安装
3.1 将节点1中配置好的hive复制到节点2和节点3中的opt下
scp -r /opt/hive-3.1.2 node002:/opt/
scp -r /opt/hive-3.1.2 node003:/opt/
3.2 将节点1中配置好的环境变量复制到节点2和节点3中的etc下,并且进行source
scp /etc/profile node002:/etc/
scp /etc/profile node003:/etc/
ssh root@node002 "source /etc/profile"
ssh root@node003 "source /etc/profile"
3.3 将节点1中配置好的core-site.xml复制到到节点2和节点3中的/etc/hadoop/下
scp /opt/hadoop-3.1.2/etc/hadoop/core-site.xml node002:/opt/hadoop-3.1.2/etc/hadoop/
scp /opt/hadoop-3.1.2/etc/hadoop/core-site.xml node003:/opt/hadoop-3.1.2/etc/hadoop/
3.4 将节点2和节点3中hadoop和hdfs中的guava-*.jar删除
ssh root@node002 "rm -rf /opt/hadoop-3.1.2/share/hadoop/common/lib/guava-*.jar"
ssh root@node002 "rm -rf /opt/hadoop-3.1.2/share/hadoop/hdfs/lib/guava-*.jar"
ssh root@node003 "rm -rf /opt/hadoop-3.1.2/share/hadoop/common/lib/guava-*.jar"
ssh root@node003 "rm -rf /opt/hadoop-3.1.2/share/hadoop/hdfs/lib/guava-*.jar"
查看节点2和节点3的lib文件夹(有没有都行 主要是记录一下怎么查看的)
ssh root@node002 "ls -sarln /opt/hadoop-3.1.2/share/hadoop/common/lib/"
3.5 将节点1中hive中lib中的guava-19.0.jar复制到节点2和节点3中hadoop和hdfs中
scp guava-19.0.jar node002:/opt/hadoo-3.1.2/share/hadoop/common/lib/guava-19.0.jar
scp guava-19.0.jar node002:/opt/hadoo-3.1.2/share/hadoop/hdfs/lib/guava-19.0.jar
scp guava-19.0.jar node003:/opt/hadoo-3.1.2/share/hadoop/common/lib/guava-19.0.jar
scp guava-19.0.jar node003:/opt/hadoo-3.1.2/share/hadoop/hdfs/lib/guava-19.0.jar
3.5 修改节点2和节点3的客户端配置文件
3.5.1 查看 hive-site.xml文件 (可以不用)
cat /opt/hive-3.1.2/conf/hive-site.xml
3.5.2 切换到节点2,进入配置文件
ssh node002
vim /opt/hive-3.1.2/conf/hive-site.xml
3.5..3 修改配置文件删除多余的部分并添加下面的部分
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
<!--美化打印语句-->
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
<!--下面配置根据情况看是否需要 不要就去掉-->
<!--配置hive server2是在哪台虚拟机上开启-->
<property>
<name>hive.server2.webui.host</name>
<value>node001</value>
</property>
<!--配置hive server2是在外部页面的端口号-->
<property>
<name>hive.server2.webui.port</name>
<value>10002</value>
</property>
<!--配置hive默认存储的位置-->
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/hive/warehouse</value>
</property>
<!--指定hive.metastore.uris的port为了启动metastore服务的时候不用指定端口-->
<!--hive == service metastore -p 9083 & | hive == service metastore-->
<property>
<name>hive.metastore.uris</name>
<value>thrift://node001:9083</value>
</property>
</configuration>
3.5..3 将修改好的节点2的hive-site.xml配置文件复制到节点3 ,这里会覆盖原来节点3的hive-site.xml文件
scp /opt/hive-3.1.2/conf/hive-site.xml node003:/opt/hive-3.1.2/conf
3.5.4 exit 退出
4.测试是否安装成功
4.1 启动hive
hive --service metastore
当出现Starting Hive Metastore Server等,即表示启动成功
在复制当前窗口 里面输入 hive 会出现下面的hive session id以及hive(default)
然后可以进行创建表等操作
show databases;
create database test;
use test;
create table hive_test (id string,name string,age string);
show tables;
insert into table hive_test('111','test111','12');
select * from hive_test;
- 点赞
- 收藏
- 关注作者
评论(0)