当前位置:   article > 正文

23年hadoop单机版+hive_hadoop3.3.6 单机版

hadoop3.3.6 单机版

说明

工作需要研究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
    
    • 1
    • 2
    • 3
    • 4
  • 刷新配置 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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

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;"
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

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  
  • 1
  • 2
  • 刷新配置 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>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 设置缓存目录权限: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
  • 1
  • 2

初始化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
  • 1
  • 2
  • 初始化报错
    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)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18

    解决方法,删除: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
  • 1
  • 2

在这里插入图片描述

总结

  • hive云数据存储数据库可以不用mysql,习惯用mysql,也可以简化安装用其他数据库。
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/620581
推荐阅读
相关标签
  

闽ICP备14008679号