• Hadoop、Hive安装


    一、 工具

    Linux系统:Centos,版本7.0及以上
    JDK:jdk1.8
    Hadoop:3.1.3
    Hive:3.1.2
    虚拟机:VMware
    mysql:5.7.11

    工具下载地址: https://pan.baidu.com/s/10J_1w1DW9GQC7NOYw5fwvg?pwd=0kdr
    提取码: 0kdr

    提示:以下是本篇文章正文内容,下面案例可供参考

    二、JDK安装

    下载jdk-8u181-linux-x64.tar.gz包,将此包上传至/opt 目录下。

    cd /opt
    解压安装包 tar zxvf jdk-8u181-linux-x64.tar.gz
    删除安装包 rm -f jdk-8u181-linux-x64.tar.gz
    
    • 1
    • 2
    • 3

    使用root权限编辑profile文件设置环境变量

    vi/etc/profile
    export JAVA_HOME= /usr/java/jdk1.8.0_181
    export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export PATH=$PATH:$JAVA_HOME/bin
    
    • 1
    • 2
    • 3
    • 4

    让修改的文件生效

    source /etc/profile
    
    • 1

    三、安装mysql

    下载mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz包,将此包上传至/opt目录下,并改名mysql。

    cd /opt
    
    tar -xzvf mysql-5.7.11-linux-glibc2.5-x86_64.tar.gz 
    
    mv mysql-5.7.11-linux-glibc2.5-x86_64 mysql
    
    • 1
    • 2
    • 3
    • 4
    • 5

    先查询是否存在用户组

    groups mysql 
    
    • 1

    创建用户组和用户名

    groupadd mysql && useradd -r -g mysql mysql
    
    • 1

    授予文件数据目录权限

    chown mysql:mysql -R /opt/mysql/data
    
    • 1

    修改/etc/my.cnf配置文件,没有得到话就创建

    vi /etc/my.cnf
    
    • 1
    [mysqld]
    port = 3306
    user=mysql
    basedir=/opt/mysql/
    datadir=/opt/mysql/data
    socket=/tmp/mysql.sock
    symbolic-links=0
    
    [mysqld_safe]
    log-error=/opt/mysql/data/mysql.log
    pid-file=/opt/mysql/data/mysql.pid
    
    [client]
    port=3306
    default-character-set=utf8
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15

    初始化mysql服务

    cd /opt/mysql/bin
    
    • 1

    执行命令,然后会有一个默认密码,有的人这里会报错是因为没有安装libaio,这里就先安装一遍

    yum install libaio -y
    
    • 1
    ./mysqld --defaults-file=/etc/my.cnf --user=mysql --initialize
    
    • 1

    在这里插入图片描述

    启动mysql

    cp /opt/mysql/support-files/mysql.server /etc/init.d/mysql
    
    • 1
    service mysql start
    
    • 1

    进入目录

    cd /opt/mysql/bin
    
    • 1

    登录,输入刚才的临时密码就可以了(直接复制粘贴)

    ./mysql -u root -p 
    
    • 1

    修改密码,我设置的密码是root,在最后面,根据自己需要进行设置

    alter user 'root'@'localhost' identified with mysql_native_password BY 'root';
    
    • 1

    刷新,使操作生效

    flush privileges;
    
    • 1

    更改数据库连接权限

    use mysql;
    
    • 1
    update user set host='%' where user = 'root';
    
    • 1
    flush privileges;
    
    • 1

    在这里插入图片描述

    退出

    exit
    
    • 1

    测试

    我虚拟机的ip为192.168.19.10
    在这里插入图片描述
    有的人会连接不成功,是因为发防火墙没有放开端口,这里有两种方法,关闭防火墙或者开放端口

    关闭防火墙

    systemctl stop firewalld
    
    • 1

    开放端口

    firewall-cmd --zone=public --add-port=3306/tcp --permanent
    
    • 1

    开放完端口后需要重启防火墙才能生效

    firewall-cmd --reload
    
    • 1

    在这里插入图片描述

    设置开机自启

    添加到服务列表

    chkconfig --add mysql
    
    • 1

    查看列表

    chkconfig --list
    
    • 1

    在这里插入图片描述

    一般2345都是开或者on的,如果不是执行命令

    chkconfig --level 2345 mysql on
    
    • 1

    添加系统路径

    vi /etc/profile
    
    • 1
    export PATH=/opt/mysql/bin:$PATH
    
    • 1
    source /etc/profile
    
    • 1

    四、hadoop安装

    安装步骤和jdk的完全一样,存在/opt ,然后把下载解压的hadoop放到该文件夹下面。最主要的也还是配置文件,如果配置文件里面的路径正确那就可以。配置代码如下:

    vi/etc/profile
    
    • 1
    export HADOOP_HOME=/opt/hadoop-3.1.3
    export HADOOP_INSTALL=$HADOOP_HOME
    export HADOOP_MAPRED_HOME=$HADOOP_HOME
    export HADOOP_HDFS_HOME=$HADOOP_HOME
    export HADOOP_COMMON_HOME=$HADOOP_HOME
    export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
    export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    安装完之后可以在终端输入hadoop version命令查看:

    在这里插入图片描述

    Hadoop分布式配置

    终端输入mkdir /opt/hadoop-3.1.3/tmp创建tmp文件夹
    终端输入mkdir /opt/hadoop-3.1.3/data/namenode创建namenode文件夹
    终端输入mkdir /opt/hadoop-3.1.3/data/datanode创建datanode文件夹
    在终端输入cd /opt/hadoop-3.1.3/etc/hadoop/ 注意自己的路径,后面需要修改的文件都在这个目录下面,这里先进入该目录
    
    • 1
    • 2
    • 3
    • 4

    进入/opt/hadoop-3.1.3/etc/hadoop

    cd /opt/hadoop-3.1.3/etc/hadoop
    
    • 1

    配置core-site.xml:输入vi core-site.xml 打开文件后添加
    (全分布式中我使用三台虚拟机,KingSSM是我的主机名,还有两台分别是Slave1和Slave2)

    <configuration>
      <property>
        <name>fs.defaultFSname>
        <value>hdfs://kingssm:9000value>
      property>
      <property>
        <name>hadoop.tmp.dirname>
        <value>/opt/hadoop-3.1.3/tmpvalue>
      property>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    配置hdfs-site.xml:输入vi hdfs-site.xml 打开文件后添加

    <configuration>
        <property>
            <name>dfs.replicationname>
            <value>1value>
        property>
        <property>
            <name>dfs.namenode.name.dirname>
            <value>/opt/hadoop-3.1.3/data/namenodevalue>
        property>
        <property>
            <name>dfs.datanode.data.dirname>
            <value>/opt/hadoop-3.1.3/data/datanodevalue>
        property>
        <property>
             <name>dfs.permissionsname>
             <value>falsevalue>
        property>
    configuration>
    
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    配置mapred.site.xml:输入vi mapred-site.xml 打开文件后添加

    <configuration>
       <property>
            <name>mapreduce.framework.namename>
            <value>yarnvalue>
       property>
       <property>
            <name>mapred.job.trackername>
            <value>kingssm:9001value>
       property>
    configuration>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    配置yarn-site.xml:输入yarn-site.xml打开文件后添加

    <configuration>
    
      <property>
            <name>yarn.nodemanager.aux-servicesname>
            <value>mapreduce_shufflevalue>
      property>
      <property>
            <name>yarn.resourcemanager.hostnamename>
            <value>kingssmvalue>
      property>
      <property>
            <name>yarn.log-aggregation-enablename>
            <value>truevalue>
      property>
      <property>
            <name>yarn.log-aggregation.retain-secondsname>
            <value>604800value>
      property>
    configuration>
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    配置hadoop-env.sh:输入vi hadoop-env.sh 打开文件后添加

    export JAVA_HOME=/opt/jdk1.8.0_181
    export HADOOP_HOME=/opt/hadoop-3.1.3
    export PATH=$PATH:/opt/hadoop-3.1.3/bin
    export HADOOP_OPTS="-Djava.library.path=${HADOOP_HOME}/lib/native"
    export HADOOP_PID_DIR=/opt/hadoop-3.1.3/pids
    
    • 1
    • 2
    • 3
    • 4
    • 5

    配置yarn-env.sh:输入vi yarn-env.sh 打开文件后添加

    YARN_RESOURCEMANAGER_USER=root
    HADOOP_SECURE_DN_USER=yarn
    YARN_NODEMANAGER_USER=root
    
    • 1
    • 2
    • 3

    配置workers:输入vi workers 打开文件后添加,这里换成你的主机名和IP地址(KingSSM是当前正在操作的虚拟机主机名,其他两个是等下要克隆的两台虚拟机的主机名,IP地址要在虚拟机中修改)

    在这里插入图片描述

    在终端输入cd /opt/hadoop-3.1.3/sbin/ 进入新的目录
    配置start-dfs.sh:输入vi start-dfs.sh打开文件后添加

    HDFS_DATANODE_USER=root
    HDFS_DATANODE_SECURE_USER=hdfs
    HDFS_NAMENODE_USER=root
    HDFS_SECONDARYNAMENODE_USER=root
    
    • 1
    • 2
    • 3
    • 4

    配置stop-dfs.sh:输入vi stop-dfs.sh打开文件后添加

    HDFS_DATANODE_USER=root
    HDFS_DATANODE_SECURE_USER=hdfs
    HDFS_NAMENODE_USER=root
    HDFS_SECONDARYNAMENODE_USER=root
    
    • 1
    • 2
    • 3
    • 4

    关闭防火墙

    systemctl stop firewalld
    systemctl disable firewalld
    
    • 1
    • 2

    修改主机名

    # 查看主机名称
    hostname
    
    # 修改主机名
    hostnamectl --static set-hostname kingssm
    
    • 1
    • 2
    • 3
    • 4
    • 5

    设置静态IP
    终端输入ip route查看网关
    在这里插入图片描述
    输入vi /etc/sysconfig/network-scripts/ifcfg-ens33修改文件:修改或添加下面的内容,IP地址自己选择,但是注意要和网关对应,如网关是192.168.12.128,那IP地址前面就得是192.168.12,后面那部分自己随意,NDS1和网关一样,子网掩码是255.255.255.0

    在这里插入图片描述

    添加虚拟机之间的映射
    终端输入vi /etc/hosts,添加

    在这里插入图片描述

    SSH免密登录
    首先运行

    ssh localhost
    
    • 1

    正常情况下是免密登录的,如果你还要输入密码的话,那就是你ssh没有配置好。这里要说一下的是ssh7.0之后就关闭了dsa的密码验证方式,如果你的秘钥是通过dsa生成的话,需要改用rsa来生成秘钥

    ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    
    • 1
    • 2

    再次运行

    ssh localhost
    
    • 1

    如果不需要输入密码,说明ssh配置好了。接下来运行

    ssh-keygen -t rsa 然后一直回车;
    等可以再次输入时输入下面命令将公钥发布出去:
    ssh-copy-id kingssm
    ssh-copy-id slave1
    ssh-copy-id slave2
    
    • 1
    • 2
    • 3
    • 4
    • 5

    五、克隆虚拟机,启动集群

    把当前正在使用的kingssm虚拟机关闭,然后克隆两台虚拟机。

    点击虚拟机------>右键------>管理------>克隆------>完全克隆

    等克隆完之后,三台虚拟机都打开,然后对克隆出来的两台分别设置主机名slave1和slave2,并修改IP地址

    启动集群
    三台虚拟机都需要先格式化

    打开终端,以root身份操作,三台都要输入hadoop namenode -format进行格式化

    格式化完成后,在kingssm中启动集群,输入start-all.sh启动集群,(如果关闭,输入stop-all.sh)

    启动完后输入jps查看启动状态,kingssm和slave应该有以下信息

    在这里插入图片描述

    在这里插入图片描述

    访问网页查看结果:kingssm:9870

    在这里插入图片描述

    访问网页查看结果:kingssm:8088

    在这里插入图片描述

    六、hive安装

    修改hadoop的 core-site.xml中, 添加以下内容:

    修改hadoop 配置文件 /opt/hadoop-3.1.3/core-site.xml,加入如下配置项:

    <property>
        <name>hadoop.proxyuser.root.hostsname>
        <value>*value>
    property>
    <property>
        <name>hadoop.proxyuser.root.groupsname>
        <value>*value>
    property>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    软件包下载 apache-hive-3.1.2-bin.tar.gz,上传/usr目录下并解压重命名hive

    cd /opt
    tar -xzvf apache-hive-3.1.2-bin.tar.gz
    mv apache-hive-3.1.2-bin
    
    • 1
    • 2
    • 3

    修改 hive的环境配置文件: hive-env.sh

    cd /export/server/hive-3.1.2/conf
    cp hive-env.sh.template  hive-env.sh
    vim hive-env.sh
    
    • 1
    • 2
    • 3

    修改一下内容:

    # 配置hadoop的家目录
    HADOOP_HOME=/opt/hadoop-3.1.3/
    # 配置hive的配置文件的路径
    export HIVE_CONF_DIR=/opt/hive/conf/
    # 配置hive的lib目录
    export HIVE_AUX_JARS_PATH=/opt/hive/lib/
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    创建配置文件

    cd /opt/conf/
    vi hive-site.xml
    
    • 1
    • 2

    将以下内容复制配置文件中

    
    
    <configuration>
            <property>
                    <name>javax.jdo.option.ConnectionURLname>
                    <value>jdbc:mysql://kingssm:3306/metastore?createDatabaseIfNotExist=true&useSSL=falsevalue>
            property>
     
            <property>
                    <name>javax.jdo.option.ConnectionDriverNamename>
                    <value>com.mysql.jdbc.Drivervalue>
            property>
            <property>
                    <name>javax.jdo.option.ConnectionUserNamename>
                    <value>rootvalue>
            property>
            <property>
                    <name>javax.jdo.option.ConnectionPasswordname>
                    <value>123456value>
            property>
    	   <property>
                    <name>hive.metastore.warehouse.dirname>
                    <value>/user/hive/warehousevalue>
            property>
            <property>
                    <name>hive.metastore.schema.verificationname>
                    <value>falsevalue>
            property>
            <property>
                    <name>hive.metastore.event.db.notification.api.authname>
                    <value>falsevalue>
            property>
             <property>
                    <name>hive.cli.print.current.dbname>
                    <value>truevalue>
            property>
                    
    	    <property>
    	        <name>hive.metastore.urisname>
    	        <value>thrift://kingssm:9083value>
    	    property>
             <property>
                    <name>hive.cli.print.headername>
                    <value>truevalue>
            property>
            <property>
                    <name>hive.server2.thrift.bind.hostname>
                    <value>kingssmvalue>
            property>
            <property>
                    <name>hive.server2.thrift.portname>
                    <value>10000value>
            property>
    configuration>
    
    
    • 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
    • 52
    • 53
    • 54
    • 55
    vi /etc/profile
    
    • 1
    export HIVE_HOME=/opt/hive
    export PATH=$PATH:$HIVE_HOME/bin
    
    • 1
    • 2
    source /etc/profile
    
    • 1

    连接MySQL, 用户名root, 密码root

    mysql -uroot -proot
    
    • 1

    创建hive元数据, 需要和hive-site.xml中配置的一致sql
    创建数据库, 数据库名为: metastore

    create database metastore;
    show databases;
    
    • 1
    • 2

    初始化元数据库

    schematool -initSchema -dbType mysql -verbose
    
    • 1

    看到schemaTool completed 表示初始化成功

    验证安装

    hive
    
    • 1

    退出

    quit;
    
    • 1

    如遇以下错误及解决方法:

    在这里插入图片描述

    hadoo的slf4j和hive两个slf4j冲突

    删除 /opt/hadoop-3.1.3/share/hadoop/common/lib/slf4j-log4j12-1.7.25.jar

    在这里插入图片描述

    hadoop和hive的两个guava.jar版本不一致

    将高版本的替换到底版本的

    在这里插入图片描述

    创建HDFS的hive相关的目录

    hadoop fs -mkdir /tmp
    hadoop fs -mkdir -p /user/hive/warehouse
    hadoop fs -chmod g+w /tmp
    hadoop fs -chmod g+w /user/hive/warehouse

    启动 hive的服务: metastore

    先启动metastore服务项:
    前台启动:

    cd /opt/hive/bin
    hive --service metastore
    
    • 1
    • 2

    ​ 注意: 前台启动后, 会一直占用前台界面, 无法进行操作
    ​ 好处: 一般先通过前台启动, 观察metastore服务是否启动良好
    前台退出: ctrl + c

    后台启动:
    当前台启动没有任何问题的时候, 可以将其退出, 然后通过后台启动, 挂载后台服务即可

    cd /opt/hive/bin
    nohup hive --service metastore &
    
    • 1
    • 2

    ​ 启动后, 通过 jps查看, 是否出现一个runjar 如果出现 说明没有问题(建议搁一分钟左右, 进行二次校验)
    ​ 注意: 如果失败了, 通过前台启动, 观察启动日志, 看一下是什么问题, 尝试解决

    后台如何退出:
    通过 jps 查看进程id 然后采用 kill -9

    启动hive的服务: hiveserver2服务

    接着启动hiveserver2服务项:
    前台启动:

    cd /opt/hive/bin
    hive --service hiveserver2
    
    • 1
    • 2

    ​ 注意: 前台启动后, 会一直占用前台界面, 无法进行操作
    ​ 好处: 一般先通过前台启动, 观察hiveserver2服务是否启动良好
    前台退出: ctrl + c

    后台启动:
    当前台启动没有任何问题的时候, 可以将其退出, 然后通过后台启动, 挂载后台服务即可

    cd /opt/hive/bin
    nohup hive --service hiveserver2 &
    
    • 1
    • 2

    ​ 启动后, 通过 jps查看, 是否出现一个runjar 如果出现 说明没有问题(建议搁一分钟左右, 进行二次校验)
    ​ 注意: 如果失败了, 通过前台启动, 观察启动日志, 看一下是什么问题, 尝试解决

    后台如何退出:
    通过 jps 查看进程id 然后采用 kill -9

    基于beeline的连接方式

    cd /opt/hive/bin
    beeline --进入beeline客户端
    连接hive:
    !connect jdbc:hive2://kingssm:10000
    接着输入用户名: root
    最后输入密码: 无所谓(一般写的都是虚拟机的登录密码)

    可能出现问题

    在这里插入图片描述

    到我们hadoop下的/opt/hadoop-3.1.3/data/datanode/current下去修改VERSION文件,把datanodeUuid改成两个不同的id就可以了,随便改都可以~

  • 相关阅读:
    AWS AD Connector 的网络配置
    uniapp使用uv-vi组件创建表单,收集信息
    基于 Redisson 和 Kafka 的延迟队列设计方案
    Linux入门第三讲(完结)
    前后端通信 —— HTTP/HTTPS
    基于深度学习的菠萝与果叶视觉识别及切断机构设计
    Redis数据结构:散列
    HR如何提升自己的专业能力?从这入手!
    微信快捷回复怎么设置?
    webpack基础
  • 原文地址:https://blog.csdn.net/qq_43409973/article/details/134049246