23年hadoop单机版+hive

说明

工作需要研究hive功能,线上环境不能动,搭建单机版hadoop+hive测试环境,使用当前最新hadoop 3.3.6+ hive 3.1.3。

分享

环境信息

  • 系统环境 centos7
  • 安装目录:
    • java: /usr/java/
    • hadoop: /opt/module/
    • hive: /opt/module/

安装

jdk

  • 准备java8安装包:jdk-8u201-linux-x64.tar.gz

  • 解压安装:mkdir -p /usr/java && tar -zxvf jdk-8u201-linux-x64.tar.gz -C /usr/java/

  • 配置环境变量,编辑文件:vi /etc/profile.d/my_env.sh 增加jdk环境变量

    
    #JAVA_HOME export是全局变量
    export JAVA_HOME=/usr/java/jdk1.8.0_201
    export PATH=$PATH:$JAVA_HOME/bin
    
  • 刷新配置 source /etc/profile

  • 验证 java -version

hadoop

  • 下载hadoop 3.3.6 下载地址 ,解压安装包: mkdir -p /opt/module/ && tar -zxvf hadoop-3.3.4.tar.gz -C /opt/module/
  • hadoop不添加到环境变量,hive配置文件指定物理路径

配置core-site.xml

  • 修改文件:vi /opt/module/hadoop-3.3.6/etc/hadoop/core-site.xmlconfiguration 节点间增加主机和用户组权限配置,完整内容如下:
<configuration>
    <property>
            <name>hadoop.proxyuser.root.hosts</name>
            <value>*</value>
    </property>
    <property>
            <name>hadoop.proxyuser.root.groups</name>
            <value>*</value>
    </property>
</configuration>

mysql

  • hive运行需要mysql存储元数据,mysql8版本 8.0.33 下载地址
  • 安装过程
# 解压安装包
tar -xvf mysql-*-1.el7.x86_64.rpm-bundle.tar

# 安装 
rpm -ivh mysql-community-common-*-1.el7.x86_64.rpm --nodeps --force && rpm -ivh mysql-community-libs-*-1.el7.x86_64.rpm --nodeps --force && rpm -ivh mysql-community-client-*-1.el7.x86_64.rpm --nodeps --force && rpm -ivh mysql-community-server-*-1.el7.x86_64.rpm --nodeps --force

# 验证,查看安装mysql
rpm -qa | grep mysql

# 输入以下命令,完成mysql初始化
mysqld --initialize
# 设置目录权限
chown mysql:mysql /var/lib/mysql -R

# 启动服务和开机启动
systemctl start mysqld.service && systemctl enable mysqld

# 查看默认初始化密码
cat /var/log/mysqld.log | grep password
# 重置root密码并设置root账号远程登录
mysql -uroot -p --connect-expired-password -e "alter user 'root'@'localhost' identified by '12WE#o89T';
create user 'root'@'%' identified by '12WE#o89T';
USE mysql;
grant all on *.* TO 'root'@'%';
FLUSH PRIVILEGES;"

hive

安装

  • 解压安装:mkdir -p /opt/module/ && tar -zxvf apache-hive-3.1.3-bin.tar.gz -C /opt/module/
  • 配置环境标量,编辑文件:vi /etc/profile.d/my_env.sh,增加如下内容
export HIVE_HOME=/opt/module/apache-hive-3.1.3-bin
export PATH=$PATH:$HIVE_HOME/bin  
  • 刷新配置 source /etc/profile

配置hive-site.xml

  • 复制文件,cp /opt/module/apache-hive-3.1.3-bin/conf/hive-default.xml.template /opt/module/apache-hive-3.1.3-bin/conf/hive-site.xml
  • 修改下面内容,注意自己MySQL配置,vi /opt/module/apache-hive-3.1.3-bin/conf/hive-site.xml,添加如下内容
  <!-- mysql连接地址 -->
  <property>
    <name>javax.jdo.option.ConnectionURL</name>
    <value>jdbc:mysql://localhost:3306/hive?&amp;createDatabaseIfNotExist=true&amp;characterEncoding=UTF-8&amp;useSSL=false&amp;allowPublicKeyRetrieval=true</value>
  </property>
  <!-- mysql用户名 -->
  <property>
    <name>javax.jdo.option.ConnectionUserName</name>
    <value>root</value>
  </property>
  <!-- mysql密码 -->
  <property>
    <name>javax.jdo.option.ConnectionPassword</name>
    <value>12WE#o89T</value>
  </property>
  <!-- mysql连接驱动类,这里用mysql8,mysql5是:com.mysql.jdbc.Driver -->
  <property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    <value>com.mysql.cj.jdbc.Driver</value>
  </property>
  <property>
    <name>datanucleus.schema.autoCreateAll</name>
    <value>true</value> 
  </property>
  <property>
    <name>hive.metastore.schema.verification</name>
    <value>false</value>
  </property>
  <!-- hive登录用户名 -->
  <property>
    <name>hive.server2.thrift.client.user</name>
    <value>root</value>
    <description>Username to use against thrift client</description>
  </property>
  <!-- hive登录用户密码 -->
  <property>
    <name>hive.server2.thrift.client.password</name>
    <value>1234</value>
    <description>Password to use against thrift client</description>
  </property>
  <!-- 数据缓存目录 -->
  <property>
    <name>hive.exec.local.scratchdir</name>
    <value>/tmp/hive</value>
    <description>Local scratch space for Hive jobs</description>
  </property>
  <property>
    <name>hive.downloaded.resources.dir</name>
    <value>/tmp/hive/resources</value>
    <description>Temporary local directory for added resources in the remote file system.</description>
  </property>
  • 设置缓存目录权限:chmod 777 /tmp/hive

配置hive-env

  • 复制hive-env.sh文件 cp /opt/module/apache-hive-3.1.3-bin/conf/hive-env.sh.template /opt/module/apache-hive-3.1.3-bin/conf/hive-env.sh
  • 修改文件添加Hadoop、hive路径,vi /opt/module/apache-hive-3.1.3-bin/conf/hive-env.sh
HADOOP_HOME=/opt/module/hadoop-3.3.6
export HIVE_CONF_DIR=/opt/module/apache-hive-3.1.3-bin/conf

初始化mysql数据库

  • 下载mysql连接jar:wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.30/mysql-connector-java-8.0.30.jar,放在 cp mysql-connector-java-*.jar /opt/module/apache-hive-3.1.3-bin/lib && ls /opt/module/apache-hive-3.1.3-bin/lib/mysql-connector-java-*.jar
  • 初始化mysql数据库:/opt/module/apache-hive-3.1.3-bin/bin/schematool -initSchema -dbType mysql
  • 最后提示completed说明初始化成功
Initialization script completed
schemaTool completed
  • 初始化报错
    SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
    Exception in thread "main" java.lang.RuntimeException: com.ctc.wstx.exc.WstxParsingException: Illegal character entity: expansion character (code 0x8
    at [row,col,system-id]: [3215,96,"file:/opt/module/apache-hive-3.1.3-bin/conf/hive-site.xml"]
        at org.apache.hadoop.conf.Configuration.loadResource(Configuration.java:3101)
        at org.apache.hadoop.conf.Configuration.loadResources(Configuration.java:3050)
        at org.apache.hadoop.conf.Configuration.loadProps(Configuration.java:2923)
        at org.apache.hadoop.conf.Configuration.addResourceObject(Configuration.java:1035)
        at org.apache.hadoop.conf.Configuration.addResource(Configuration.java:940)
        at org.apache.hadoop.hive.conf.HiveConf.initialize(HiveConf.java:5154)
        at org.apache.hadoop.hive.conf.HiveConf.<init>(HiveConf.java:5107)
        at org.apache.hive.beeline.HiveSchemaTool.<init>(HiveSchemaTool.java:96)
        at org.apache.hive.beeline.HiveSchemaTool.main(HiveSchemaTool.java:1473)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.hadoop.util.RunJar.run(RunJar.java:328)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:241)
    

    解决方法,删除:file:/opt/module/apache-hive-3.1.3-bin/conf/hive-site.xml 3215行注释即可,原因是xml解析异常。

启动验证

hive命令
  • hive命令是本地客户端登录,官方推荐使用hiveServer2的beeline方式。
    在这里插入图片描述
hiveserver2方式
  • 创建日志目录:mkdir -p /opt/module/logs/,后台启动 hiveserver2 服务:nohup hive --service hiveserver2 > /opt/module/logs/hive3.1.3.log 2>&1 &

  • beeline 连接验证

beeline
!connect jdbc:hive2://localhost:10000 root 1234

在这里插入图片描述

总结

  • hive云数据存储数据库可以不用mysql,习惯用mysql,也可以简化安装用其他数据库。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值