hive的安装配置:
从官网上下载相关的hive软件包
把安装文件apache-hive-3.1.2-bin.tar.gz和mysql8.0的安装文件mysql-8.0.27-1.el7.x86_64.rpm-bundle.tar和mydsql的jar包传输进集群里面
用tar命令解压hive安装包和mysql安装包,解压路径为/opt/moudle,命令为:
tar -zxvf apache-hive-3.1.2-bin.tar.gz -C /opt/module mkdir /opt/module/mysql8.0 tar -zxvf mysql-8.0.27-1.el7.x86_64.rpm-bundle.tar -C /opt/module/mysql8.0
修改文件夹名称,之后先删除mariadb 和之前系统自带的mysql
rpm -qa | grep mariadb | rpm -qa | grep mariadb
(因为这个和mysql占用端口号一样)
安装mysql依赖
安装命令:按照顺序执行命令,如果遇到报错请自行百度
rpm -ivh mysql-community-common-8.0.27-1.el7.x86_64.rpm rpm -ivh mysql-community-client-plugins-8.0.27-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-8.0.27-1.el7.x86_64.rpm rpm -ivh mysql-community-client-8.0.27-1.el7.x86_64.rpm rpm -ivh mysql-community-server-8.0.27-1.el7.x86_64.rpm rpm -ivh mysql-community-libs-compat-8.0.27-1.el7.x86_64.rpm rpm -ivh mysql-community-embedded-compat-8.0.27-1.el7.x86_64.rpm rpm -ivh mysql-community-devel-8.0.27-1.el7.x86_64.rpm
初始化mysql数据库
mysqld --initialize --console
目录授权:
chown -R mysql:mysql /var/lib/mysql/
启动mysql:
systemctl start mysqld.service
查看mysql服务启动状态:
systemctl status mysqld.service
查看mysql的临时密码:
grep "A temporary password" /var/log/mysqld.log
进入MySQL数据库之后修改密码:
mysql -uroot -p set password=’123456’;
重新进入mysql:
mysql -uroot -p123456
更换数据库、修改host表内容创建metastore元数据库刷新并退出
Use mysql; update user set host='%' where host='localhost'; delete from user where host!='%'; create database metastore; flush privileges; exit;
因为hive3.1.2中的有些jar包和比hadoop版本中的jar包版本低,所以我们需要进行一个jar包的替换,把hive中的/hive/lib中的guava-19.0.jar包改名为guava-19.0.jar.bak并从/hadoop-3.1.3/share/hadoop/common/lib中把guava-27.0-jre.jar复制到hive的lib目录下,并把log4j-slf4j-impl-2.10.0.jar文件改名,因为文件冲突问题。
把mysql-connect-java的jar包移动到hive的lib目录下
在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> <!-- Hive元数据存储的验证 --> <property> <name>hive.metastore.schema.verification</name> <value>false</value> </property> <!-- 元数据存储授权 --> <property> <name>hive.metastore.event.db.notification.api.auth</name> <value>false</value> </property> <!-- 指定存储元数据要连接的地址 --> <property> <name>hive.metastore.uris</name> <value>thrift://hadoop102:9083</value> </property> <!-- 指定hiveserver2连接的host --> <property> <name>hive.server2.thrift.bind.host</name> <value>hadoop102</value> </property> <!-- 指定hiveserver2连接的端口号 --> <property> <name>hive.server2.thrift.port</name> <value>10000</value> </property> </configuration>
初始化元数据库:
schematool -initSchema -dbType mysql -verbose
在启动hive之前先启动hadoop集群
命令如下:
Start-dfs.sh
Start-yarn.sh
启动hive
/opt/module/hive/bin hive
启动hiveserver2
/opt/module/hive/bin hiveserver2
这样启动hiveserver2会占用当前窗口(我误以为卡了很久,其实是有窗口占用,其中可能会有报错tez大数据处理引擎信息,不要管,建议用下面这个命令)
nohup /opt/module/hive/bin hiveserver2 2&1 &
启动元数据库服务(同理建议用第二个命令)
hive --service metastore
nohup hive --service metastore 2>&1 &
用hive命令启动hive
hive
配置完成