安装篇-MySQL8+Hive3.1.2安装分享

Boys,Grils,Friends! My name is Jinsuo.Shi. 一个不正经的大数据开发工程师,目前从事在公司主要进行CDP平台的数据接入、数据的ETL、数据的融合与事件的展开工作。
个人大数据技术栈:DataX,Sqoop,Hadoop,Hive,Spark,Flink,Hbase,Kafka,Kettle,Azkaban,Airflow,Tableau…
个人在学习领域:Python,Pandas数据分析,PowerBI数据可视化,机器学习,算法等…
个人兴趣爱好:广泛阅读,旅游远行,运动健身,王者农药…

【被我的另一篇所引用,名称是:大数据系列—从为什么学,到平台搭建,到组件学习,到企业应用的全方位的分享(stage2),因此做了一些修改!】

1.安装mysql8

1.1 下载并解压mysql8的rpm安装包

mysql-8.0.21-1.el7.x86_64.rpm-bundle.tar

1.2 依次安装以下四个rpm包

rpm -ivh mysql-community-common-8.0.21-1.el7.x86_64.rpm

rpm -ivh mysql-community-libs-8.0.21-1.el7.x86_64.rpm

rpm -ivh mysql-community-client-8.0.21-1.el7.x86_64.rpm

rpm -ivh mysql-community-server-8.0.21-1.el7.x86_64.rpm

注意1:如果安装第二个rpm过程中,出现依赖检测失败,XX被替换,执行:

yum remove mysql-libs

注意2:如果安装过程中缺少东西,用yum install xxx下载即可

1.3 初始化mysql

mysqld --initlize --user=root

1.4 mysql存放数据目录授权

chown mysql:mysql /var/lib/mysql -R

1.5 启动服务

servie mysqld start

注意:如果启动失败,原因:/var/lib/mysql目录已存在,把其改名为mysql.bak即可

1.6 登录mysql

1.6.1 找到临时密码登录

cat /var/log/mysqld.log |grep password

1.6.2 修改密码

经过后续测试,设置免密登录不好使,mysql8好像不能用,统一使用临时密码登录,之后
修改密码:ALTER USER ‘root’@‘localhost’ IDENTIFIED BY ‘Root#123’;

1.6.3 到这里MySQL就安装OK了,下面暂时不用看



1.7 后续

  1. 在mysql上创建hive数据库

    create database hive;

  2. 设置hive数据库可以远程访问

    GRANT PRIVILEGES ON hive.* TO ‘root’@’%’;

2.安装hive(使用mysql存储元数据)

2.1 下载并解压安装文件

apache-hive-3.1.2-bin.tar.gz

2.2 配置环境变量

export HIVE_HOME=/usr/hive

export PATH= P A T H : PATH: PATH:HIVE_HOME/bin

2.3 在hive/conf下配置hive-site.xml



<configuration>
<property>
	    <name>hive.metastore.warehouse.dirname>
	    <value>hdfs://alone:9000/hive/datavalue>
   property>
   <property>
	    <name>hive.exec.scratchdirname>
	    <value>hdfs://alone:9000/hive/tmpvalue>
   property>
   <property>
	    <name>hive.querylog.locationname>
	    <value>hdfs://alone:9000/hive/logvalue>
   property>
   <property>
		<name>javax.jdo.option.ConnectionURLname><value>jdbc:mysql://alone:3306/hive?useSSL=false&allowPublicKeyRetrieval=truevalue>property><property>
		<name>javax.jdo.option.ConnectionDriverNamename>
		<value>com.mysql.cj.jdbc.Drivervalue>property>
	<property>
	<name>javax.jdo.option.ConnectionUserNamename>
	<value>rootvalue>
	 property><property>
	<name>javax.jdo.option.ConnectionPasswordname>
	<value>Root#123value>
	property>
	<property>
	<name>hive.metastore.schema.verificationname>
	<value>falsevalue>
	property>
	<property>
	<name>datanucleus.metadata.validatename>
	<value>falsevalue>
	property>
	<property>
	<name>datanucleus.schema.autoCreateAllname>
	<value>truevalue>
	property>
configuration>

2.4 在hdfs上创建hive工作目录

  1. 创建/hive/data,/hive/tmp,/hive/log

  2. 目录授权

    hdfs dfs -chown 777 /hive/*

2.5 在hive/lib中放置mysql的驱动

mysql-connector-java-8.0.21.jar

2.6 初始化元数据

schematool -dbType mysql --initSchema

2.7 启动hdfs,启动hive

  1. 启动hdfs

    start-dfs.sh

  2. 关闭安全模式

    hdfs dfsadmin -safemode leave

  3. 启动hive

    hive

3.hive的HQL语法

3.1 DDL

    • 创建

      create database test;

    • 查看

      show databases;

    • 删除

      drop database test;

    • 创建

      1.普通方式
      create table book(id int,name string);
      2.以指定格式分割(常用)
      create table goods(id int,name string) row format delimited fields terminated by ',' stored as textfile;
      3.以分区创建表(把逻辑表分割)
      create table person(id int,name string) partitioned by(age int);
      4.创建表(分桶:物理分割)
      create table person(id int,name string) clustered by(id) into 4 buckets row format delimited fields terminated by '\t';
      
    • 查看

      1.查看全部表
      show tables;
      2.简单查看表信息
      desc tableName;
      3.详细查看表信息
      desc formatted tableName;
      
    • 修改

      1.修改表名
      alter table book2 rename to book;
      2.增加字段
      alter table book add columns(price float);
      
    • 删除

      drop table tableName;
      

3.2 DML

  1. 加载数据

    1.从本地文件
    load data local inpath '/root/hive/book.txt' into table book
    2.hdfs文件
    load data inpath '/hive/a.txt' into table goods;
    
  2. 清空表

    truncate table book;
    

3.3 DQL

3.3.1 和SQL相同部分

  1. 别名
  2. 聚合函数(count,sum,avg,max)
  3. limit 1,2 跳过前一条,显示两条
  4. where 后跟条件
  5. group by 分组
  6. order by 排序
  7. 关联查询:内连接、左外连接、右外连接、联合查询(union)

3.3.2 HQL的函数

  1. 查看所有函数

    show functions;
    
  2. 查看单个函数用法

    show function extended split;
    
    
  3. 常用函数

    • 空值函数 nvl(filedName,默认值)
      
      
    • case field when xxx then x else y end
      
      
  4. 自定义函数

    1. 写好java程序打包成jar(以demo3.jar为例)

      jar cvf demo3.jar demo3/*.*
      
      
    2. 上传到/usr/hive/lib 目录下

    3. 进入hive:

      • add jar /usr/hive/lib/demo3.jar;
        
        
      • create temporary function a3 as 'demo3.MyUDF';
        
        
    4. 使用函数

4.hive的三种操作方式

  1. hive命令行

  2. 执行sql脚本

    hive -f a.sql
    
    

4.3 jdbc操作hive

  1. 导入依赖

    		<dependency>
                <groupId>org.apache.hivegroupId>
                <artifactId>hive-jdbcartifactId>
                <version>3.1.2version>
            dependency>
    
    
  2. 编码

    public class HiveJdbc {
           
    
        static Connection conn=null;
    
        static {
           
            String dirver="org.apache.hive.jdbc.HiveDriver";
            String url ="jdbc:hive2://192.168.85.135:10000/test";
            try {
           
                conn = DriverManager.getConnection(url, "root", "root");
                System.out.println(conn+"-----------");
            } catch (SQLException e) {
           
                e.printStackTrace();
            }
        }
    
        public static void main(String[] args) {
           
            try {
           
                Statement stmt = conn.createStatement();
                ResultSet resultSet = stmt.executeQuery("show tables;");
                while (resultSet.next()){
           
                    System.out.println(resultSet.getString(1));
                }
    
                resultSet.close();
                stmt.close();
                conn.close();
            } catch (SQLException e) {
           
                e.printStackTrace();
            }
    
        }
    }
    
    
  3. 配置hive-site.xml

            <property> 
                    <name>hive.server2.thrift.portname> 
                    <value>10000value>
            property>  
            <property> 
                    <name>hive.server2.thrift.bind.hostname>
                    <value>alonevalue>
            property>
    
    
    
  4. 启动hive的远程服务

    hive --service hiveserver2 &
    
    
  5. 验证是否启动成功

    netstat -nlp|grep 10000
    
    
  6. 运行代码测试

5. hive优化(小数据)

  1. fetch模式

    • 在hive下使用命令

      set hive.fetch.task.conversion=more;
      
      
    • hive-site.xml中配置

      <property>
          <name>hive.fetch.task.conversionname>
          <value>morevalue>
      property>
      
      
  2. 本地模式

    • 在hive下使用命令

      set hive.exec.mode.local.auto=true;
      
      
    • hive-site.xml中配置

      <property>
          <name>hive.exec.mode.local.autoname>
          <value>truevalue>
      property>
      
      

6. sqoop的配置使用

6.1 sqoop的配置

  1. 下载解压

  2. 配置环境变量

  3. 替换lang3.jar(用lang2.6)

  4. 连接mysql测试

    sqoop list-databases --connect jdbc:mysql://alone:3306/mysql --username root --password Root#123
    

6.2 sqoop的使用

  1. 查看帮助

    sqoop help
    sqoop import --help
    
  2. 导入数据到hdfs

    sqoop import --connect jdbc:mysql://alone:3306/test --username root --password Root#123 --table person --target-dir /hive/data/person
    
  3. 导出数据到mysql

    sqoop export --bindir . --connect jdbc:mysql://alone:3306/test?useSSL=false --username root --password Root#123 --table person --export-dir '/hive/data/person.txt'
    

你可能感兴趣的:(我要做大数据开发,big,data,hive,mysql,大数据)