zoukankan      html  css  js  c++  java
  • Hadoop 分布式集群中安装 Hive(CentOS 7系统)

    软件版本

    • 电脑系统:macOS 10.14.6

    • 虚拟机软件:Parallels Desktop15

    • Hadoop各节点节点操作系统:CentOS-7-x86_64-Minimal-1908.iso

    • CentOS 7 JDK版本:jdk1.8.0_162

    • Hadoop版本:hadoop-2.7.7

    • Hive版本:hive-2.3.3

    • MySQL版本:mysql-5.7.30


    环境配置说明

    • 电脑配置:MacBook Pro 13(8G + 256G)

    • 三台 CentOS 7 配置:内存1G、硬盘13G(与Mac完全隔离的虚拟机)

    • 三台 CentOS 7 的名字及IP:node1(10.211.55.18)、node2(10.211.55.19)、node3(10.211.55.20)

    • 三台虚拟机的用户名:lyh

    • node为主结点、node2、node3为次节点


    安装前提

    1. 安装jdk,并配置好Linux环境变量。
    2. 安装好Hadoop完全分布式

    参考文献:Hadoop分布式集群搭建


    安装并配置MySQL

    卸载node1、node2、node3中系统自带的Maria DB

    • 说明:

      • 三台node都可以不用卸载Maria DB,使用Maria DB。

      • 也可以不用卸载node2、node3中的Maria DB,只卸载node1中的Maria DB,因为node2、node3中的Maria DB不影响Hive的搭建。

      • 本博文教程中,MySQL只在node1中安装。卸载node1、node2、node3中系统自带的Maria DB。


    1. 查看进程

      ps -f | grep mysqld
      
    2. 杀死进程

      pkill -9 mysqld
      
    3. 查看是否已安装MariaDB、或一些MariaDB相关的模块

      rpm -qa | grep mariadb
      
    4. 卸载MariaDB

      yum -y remove mariadb*
      
    5. 再次检查卸载干净,若已看不到相关mariadb打印了即可

      rpm -qa | grep mariadb
      

    将mysql安装包上传到node1

    1. 本地下载mysql-5.7.30安装包(下载到了桌面)

      http://ftp.ntu.edu.tw/MySQL/Downloads/MySQL-5.7/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz

    2. 将安装包上传到node1中的 /app 文件夹下

      scp -r ~/Desktop/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz lyh@10.211.55.18:/app
      

    安装依赖libaio

    1. 查看是否已经安装libaio

      ps aux | grep libaio
      ps -ef | grep libaio
      
    2. 没有的话,就安装:

      yum install -y libaio
      yum install -y cmake make gcc gcc-c++ libaio ncurses ncurses-devel
      

    安装 MySQL

    1. 查询全部用户(检查mysql组和用户是否存在)

      cat /etc/passwd|grep -v nologin|grep -v halt|grep -v shutdown|awk -F ":" '{print $1 "|" $3 "|" $4}' | more
      
      # 我这里显示如下:
      root|0|0
      sync|5|0
      lyh|1000|1000
      

      或者:

      cat /etc/group | grep mysql
      cat /etc/passwd | grep mysql
      
    2. 创建用户和组(若不存在,则创建mysql组和用户)

      • 创建mysql用户组

        groupadd mysql
        
      • 创建一个用户名为mysql的用户,并加入mysql用户组

        useradd -g mysql mysql
        
      • 将mysql用户的密码指定为 123456

        passwd mysql
        
        20200704164733
    3. 解压刚刚下载mysql安装包

      cd /app
      
      tar -zxvf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz
      
    4. 创建为mysql软链接

      ln -s mysql-5.7.30 mysql
      
    5. 更改所属的组和用户

      cd /app
      
      chown -R mysql mysql/
      chgrp -R mysql mysql/
      
      cd mysql/
      
      mkdir data
      chown -R mysql:mysql data
      
    6. 在 /etc 文件夹下创建my.cnf文件

      touch /etc/my.cnf
      
      chown 777 /etc/my.cnf
      
    7. 编辑my.cnf文件

      vim /etc/my.cnf
      

      添加如下内容:

      [mysql]
      socket=/var/lib/mysql/mysql.sock
      # set mysql client default chararter
      default-character-set=utf8
      
      [mysqld]
      skip-grant-tables
      socket=/var/lib/mysql/mysql.sock
      # set mysql server port
      port = 3306
      # set mysql install base dir
      basedir=/app/mysql
      # set the data store dir
      datadir=/app/mysql/data
      # set the number of allow max connnection
      max_connections=200
      # set server charactre default encoding
      character-set-server=utf8
      # the storage engine
      default-storage-engine=INNODB
      lower_case_table_names=1
      max_allowed_packet=16M
      explicit_defaults_for_timestamp=true
      
      [mysql.server]
      user=mysql
      basedir=/app/mysql
      
    8. 进入mysql文件夹,安装mysql

      cd /app/mysql
      
      bin/mysql_install_db --user=mysql --basedir=/app/mysql/ --datadir=/app/mysql/data/
      
      cp ./support-files/mysql.server /etc/init.d/mysqld
      
      chmod +x /etc/init.d/mysqld
      
      mkdir /var/lib/mysql
      
      chmod 777 /var/lib/mysql
      
    9. 启动mysql

      /etc/init.d/mysqld restart
      

      说明:

      启动过程中可能会出现如下问题:

      20200704174030

      解决办法:

      1. 找到是否已经有进程占用

        ps aux|grep mysql
        
        root     15163  0.0  0.1 113416  1604 pts/0    S    05:31   0:00 /bin/sh /app/mysql/bin/mysqld_safe --datadir=/app/mysql/data --pid-file=/app/mysql/data/node1.pid
        mysql    15394  0.3 17.0 1119928 172140 pts/0  Sl   05:31   0:00 /app/mysql/bin/mysqld --basedir=/app/mysql --datadir=/app/mysql/data --plugin-dir=/app/mysql/lib/plugin --user=mysql --log-error=node1.err --pid-file=/app/mysql/data/node1.pid --socket=/var/lib/mysql/mysql.sock --port=3306
        root     15425  0.0  0.0 112828   980 pts/0    R+   05:33   0:00 grep --color=auto mysql
        
      2. 关闭进程

        kill -9 15394
        
      3. 确认是否还占用

        ps aux|grep mysql
        
        root     15436  0.0  0.0 112824   976 pts/0    S+   05:34   0:00 grep --color=auto mysql
        
      4. 重启mysql

        /etc/init.d/mysqld restart
        

    设置开机启动MySQL

    cd /app/mysql
    
    chkconfig --level 35 mysqld on
    chkconfig --list mysqld
    
    chmod +x /etc/rc.d/init.d/mysqld
    chkconfig --add mysqld
    chkconfig --list mysqld
    
    20200704175143

    查看mysql状态

    service mysqld status
    
    20200704175312

    修改配置文件

    vim /etc/profile
    

    修改/etc/profile,在最后添加如下内容

    export PATH=$PATH:/app/mysql/bin
    

    保存并退出,然后是修改内容生效

    source /etc/profile
    

    获取MySQL初始密码

    cat /root/.mysql_secret
    
    20200704175922
    初始密码:
    #(6aFtq<zLi2
    

    修改MySQL初始密码

    1. 进入mysql命令行

      mysql -uroot -p
      

      然后输入获取到的初始密码,如这里获取到的初始密码为:#(6aFtq<zLi2

      20200704180558
    2. 没有修改密码的时候

      20200709130914
    3. 在mysql命令行修改密码

      • 设置密码为:123456

        set PASSWORD = PASSWORD('123456');
        
      • 更新

        flush privileges;
        
      20200704181025
    4. 验证新密码是否登录成功

      mysql -uroot -p123456
      
      20200709131008 20200709131035

    添加远程访问权限

    use mysql;
    update user set host='%' where user='root';
    select host,user from user;
    
    20200704184434

    重启MySQL,使刚刚的配置生效:

    /etc/init.d/mysqld restart
    

    node1 安装并配置Hive

    下载Hive、上传到node1、2、3

    1. 下载 Hive

      https://archive.apache.org/dist/hive/hive-2.3.3/apache-hive-2.3.3-bin.tar.gz

    2. 将Hi 册上传到node1、node2、node3的 /app 文件夹下

      scp -r ~/Desktop/apache-hive-2.3.3-bin.tar.gz lyh@10.211.55.18:/app
      
      scp -r ~/Desktop/apache-hive-2.3.3-bin.tar.gz lyh@10.211.55.19:/app
      
      scp -r ~/Desktop/apache-hive-2.3.3-bin.tar.gz lyh@10.211.55.20:/app
      
    3. 解压apache-hive-2.3.3-bin.tar.gz

      tar -zxvf apache-hive-2.3.3-bin.tar.gz
      
    4. 重命名 apache-hive-2.3.3-bin

      mv apache-hive-2.3.3-bin hive-2.3.3
      
    5. 创建软链接

      ln -s hive-2.3.3 hive
      
    6. 删除apache-hive-2.3.3-bin.tar.gz

      rm -rf apache-hive-2.3.3-bin.tar.gz
      

    配置 Hive 环境

    1. 进入mysql命令行(node1)

      • 创建可以登录mysql下的hive用户,密码设置为 123456

        mysql -uroot -p123456
        
        USE mysql;
        
        -- 用户名:hive    密码:123456
        CREATE USER hive IDENTIFIED BY '123456';
        
        -- 为 hive 用户分配所有权限,该用户可以在任何电脑上登录 mysql 服务器
        GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' IDENTIFIED BY 'hive';
        
        20200704212830
      • 使用 hive 用户登录 mysql

        mysql -uhive -p123456
        
      • 创建 hive 专用数据库

        create database hive;
        
    2. 笨蛋下载mysql-connector-java-5.1.48.jar

      将本地下载好的mysql-connector-java-5.1.48.jar上传到node1的/app/hive/lib 目录下

      scp -r ~/Desktop/mysql-connector-java-5.1.48.jar lyh@10.211.55.18:/app/hive/lib
      
    3. 配置Linux环境变量(node1、node2、node3都需要配置)

      vim /etc/profile
      
      export HIVE_HOME=/app/hive
      export PATH=$PATH:$HIVE_HOME/bin
      
      source /etc/profile
      
    4. 创建hive-site.xml并编辑(node1)

      cd /app/hive/conf
      
      vim hive-site.xml
      

      添加如下内容

      <?xml version="1.0" encoding="UTF-8" standalone="no"?>
      <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
      <configuration>
        			<!-- 连接mysql地址 -->
              <property>
                      <name>javax.jdo.option.ConnectionURL</name>
                      <value>jdbc:mysql://localhost:3306/hive?useSSL=false</value>
              </property>
              
        			<!-- 数据库驱动 -->
              <property>
                      <name>javax.jdo.otion.ConnectionDriverName</name>
                      <value>com.mysql.jdbc.Driver</value>
      				</property>
      
        			<!-- 连接MySQL用户名 -->
              <property>
                      <name>javax.jdo.option.ConnectionUserName</name>
                      <value>hive</value>
              </property>
              
        			<!-- 连接MySQL密码 -->
              <property>
                      <name>javax.jdo.option.ConnectionPassword</name>
                      <value>123456</value>
              </property>
      </configuration>
      

      node1 上面如果将localhost改成主机名会导致,hive数据库初始化失败,最终虽然能登录hive,但不能用。

    5. 初始化 hive 数据库(node1)

      cd /app/hive/bin
      
      schematool -dbType mysql -initSchema
      
    6. 登录hive用户,查看hive数据库中是否有初始化生成的表(node1)

      mysql -uhive -p123456
      
      use hive;
      
      show tables;
      
      20200704223542
    7. 测试hive(node1)

      • 首先需要启动Hadoop

        start-all.sh
        
      • 进入hive命令行

        hive
        

        由于配置了hive环境变量,所有没有固定目录即可进入hive命令行

      • hive命令行执行如下操作

        -- 查看database
        show databases;
        
        20200704224837
        -- 查看table
        show tables;
        
        20200704225013
        -- 创建一个数据库
        create database hive_test_db;
        
        20200704224930
        -- quit命令退出hive命令行,只能说quit,使用exit命令不可以。
        quit;
        

    node2、node3中 hive 的配置

    方法1

    将node1中配置好的hive文件分发到node2、node3,然后稍做修改。

    1. 将node1中的hive文件夹分发到node2、node3

      cd /app
      
      scp -r hive-2.3.3/ lyh@node2:/app/hive-2.3.3/
      
      scp -r hive-2.3.3/ lyh@node3:/app/hive-2.3.3/
      
    2. 然后修改部分hive-site.xml 的配置(node2、node3都一样的配置)

      cd /app/hive
      
      vim hive-site.xml
      

      修改连接mysql地址

      <!-- 连接mysql地址 -->
      <property>
              <name>javax.jdo.option.ConnectionURL</name>
              <value>jdbc:mysql://node1:3306/hive?useSSL=false</value>
      </property>
      

      添加如下内容

      <!-- 指定多个 remote Metoresores -->
      <property>  
              <name>hive.metastore.uris</name>  
              <value>thrift://node1:9083</value>  
      </property>
      

    方法2

    1. 创建hive-site.xml并编辑(node2、node3)

      cd /app/hive/conf
      
      vim hive-site.xml
      

      添加如下内容

      <?xml version="1.0" encoding="UTF-8" standalone="no"?>
      <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
      <configuration>
                              <!-- 连接mysql地址 -->
              <property>
                      <name>javax.jdo.option.ConnectionURL</name>
                      <value>jdbc:mysql://node1:3306/hive?useSSL=false</value>
              </property>
      
                              <!-- 数据库驱动 -->
              <property>
                      <name>javax.jdo.otion.ConnectionDriverName</name>
                      <value>com.mysql.jdbc.Driver</value>
                                      </property>
      
                              <!-- 连接MySQL用户名 -->
              <property>
                      <name>javax.jdo.option.ConnectionUserName</name>
                      <value>hive</value>
              </property>
      
                              <!-- 连接MySQL密码 -->
              <property>
                      <name>javax.jdo.option.ConnectionPassword</name>
                      <value>123456</value>
              </property>
      
                              <!-- Hive 连接到其中一个 URI,以对 remote Metastore(以逗号分隔的 URI 列表)发出元数据请求 -->
              <property>
                      <name>hive.metastore.uris</name>
                      <value>thrift://node1:9083</value>
              </property>
      </configuration>
      

    提示:在使用客户端访问 hive 之前,在主机中执行 hive --service metastore & 来启动metastore服务。这个时候,node2、node3使用hive命令了,数据库是node1中的hive数据库

    执行了 hive --service metastore &之后,node1中使用jps命令查看进程:

    20200704233427

    多了一个进程:RunJar


    Hive的安装和基本配置,已经完成。


    关闭hive集群:hive --service hiveserver2 &

    参考文献

    1. centos7卸载mariadb 安装mysql
    2. Linux 系统安装 MySQL 的官方文档
    3. centos7下使用mysql离线安装包安装mysql5.7
    4. 在Hadoop分布式集群中安装hive
    5. Apache Hive 中文手册
    Good Good Write Bug, Day Day Up
  • 相关阅读:
    对于大流量的网站,您采用什么样的方法来解决访问量问题?
    div section article区分--20150227
    不懂的code整理学习
    常用又容易忘记的代码
    【转】机器学习中常用损失函数
    姿态估计的两个数据集COCO和MPII的认识
    用caffe训练openpose过程中,出现异常
    编译caffe的诸多注意事项
    Win7下Anaconda3+Tensorflow
    论文阅读(Zhe Cao——【CVPR2017】Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields )
  • 原文地址:https://www.cnblogs.com/liyihua/p/14482435.html
Copyright © 2011-2022 走看看