美文网首页
阿里云-centos7-单机安装部署zookeeper+Hado

阿里云-centos7-单机安装部署zookeeper+Hado

作者: georgekaren | 来源:发表于2021-01-15 17:58 被阅读0次

    环境信息

    -购买操作系统选择centos7(7的任何一个版本都可以),如果选错了可以在阿里云管理面板的-更多--云盘和镜像--更换操作系统。


    image.png

    在阿里云购买ecs-购买后机器网卡环境(2G内存不够,选择更大的内存机器):
    公网IP-8.134.80.143、内网IP-172.30.40.95

    设置阿里云端口映射:

    开放3个端口
    50070:hdfs管理端口
    8088 : yarn 管理端口
    3306: mysql连接端口
    10000 : hive 客户端远程连接端口
    10002 : hive web界面端口

    配置入口-->安全组-->配置规则
    点击手动添加,添加3306、8088、10000、50070、10002端口

    开始安装

    整个一套安装配置内容比较多,顺序是:安装zookeeper--安装hadoop---安装mysql---安装hive--sql测试

    安装zookeeper ,zookeeper版本不要选最后一个版本,选上下兼容hadoop、hive的版本,这里选3.4.9就可以了。

    安装java

    yum -y install java-1.8.0-openjdk

    配置java环境变量
    执行:

    export JAVA_HOME=/usr/lib/jvm/jre 
    export JRE_HOME=/usr/lib/jvm/jre 
    export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib  
    export PATH=${JAVA_HOME}/bin:$PATH
    source /etc/profile
    

    下载zookeeper

    wget http://archive.apache.org/dist/zookeeper/zookeeper-3.4.9/zookeeper-3.4.9.tar.gz

    解压

    tar -xzvf zookeeper-3.4.9.tar.gz

    配置环境变量

    vim /etc/profile

    添加:

    export ZOOKEEPER_HOME=/root/zookeeper-3.4.9
    export PATH=$ZOOKEEPER_HOME/bin:$PATH
    

    刷新环境变量

    source /etc/profile

    复制配置文件

    cp /root/zookeeper-3.4.9/conf/zoo_sample.cfg /root/zookeeper-3.4.9/conf/zoo.cfg

    创建目录:

    /root/zookeeper-3.4.9/run
    /root/zookeeper-3.4.9/run/data
    /root/zookeeper-3.4.9/run/log

    修改配置文件

    vim /root/zookeeper-3.4.9/conf/zoo.cfg

    修改如下两处(没有就增加):
    dataDir=/root/zookeeper-3.4.9/run/data
    dataLogDir=/root/zookeeper-3.4.9/run/log

    启动zookeeper

    zkServer.sh start

    zk安装完成。

    安装hadoop

    hadoop,包括hdfs(分布式文件)、yarn(资源调度)、mapreduce(运算)
    hadoop和hbase 有依赖关系,
    hadoop这里选3.1.4,hbase 选2.3.3 能够兼容

    下载hadoop

    wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-3.1.4/hadoop-3.1.4.tar.gz

    解压:

    tar -zxvf hadoop-3.1.4.tar.gz

    配置环境变量

    vim /etc/profile

    添加两行

    export HADOOP_HOME=/root/hadoop-3.1.4
    export  PATH=${HADOOP_HOME}/bin:$PATH
    
    image.png

    刷新环境变量

    source /etc/profile

    修改hadoop配置文件

    vim /root/hadoop-3.1.4/etc/hadoop/hadoop-env.sh
    设置java_home
    修改JAVA_HOME=/usr/lib/jvm/jre

    创建目录:

    mkdir /root/hadoop-3.1.4/run
    mkdir /root/hadoop-3.1.4/run/hadoop

    修改hosts文件,

    vi /etc/hosts

    添加1行(172.30.40.95为服务器内网地址):
    172.30.40.95 hadoop1 hadoop1


    image.png

    修改配置文件core-site.xml

    vim /root/hadoop-3.1.4/etc/hadoop/core-site.xml

    修改hdfs配置,内容(没有就添加):

    <configuration>
    <property>
            <name>fs.defaultFS</name>
            <value>hdfs://hadoop1:8020</value>
        </property>
        <property>
            <!--指定 hadoop 存储临时文件的目录-->
            <name>hadoop.tmp.dir</name>
            <value>/root/hadoop-3.1.4/run/hadoop</value>
        </property>
        <property>
        <name>hadoop.native.lib</name>
        <value>false</value>
        <description></description>
      </property>
    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>
    </configuration>
    
    
    image.png

    修改hdfs-site.xml文件

    vim /root/hadoop-3.1.4/etc/hadoop/hdfs-site.xml

    添加hdfs副本数配置,这里配置1 ,内容(172.30.40.95为服务器内网地址):

    <configuration>
    <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
       <property>
            <name>dfs.secondary.http.address</name>
            <value>172.30.40.95:50070</value>
        </property>
    </configuration>
    
    
    image.png

    修改文件:mapred-site.xml

    vim /root/hadoop-3.1.4/etc/hadoop/mapred-site.xml
    内容:

    <configuration>
        <property>
            <name>mapreduce.framework.name</name>
            <value>yarn</value>
        </property>
    </configuration>
    

    修改文件:yarn-site.xml

    vim /root/hadoop-3.1.4/etc/hadoop/yarn-site.xml

    内容:

    <configuration>
        <property>
            <!--配置 NodeManager 上运行的附属服务。需要配置成 mapreduce_shuffle 后才可以在 Yarn 上运行 MapReduce 程序。-->
            <name>yarn.nodemanager.aux-services</name>
            <value>mapreduce_shuffle</value>
        </property>
    </configuration>
    

    主机访问设置
    在root用户目录下执行,也就是/root目录下

    ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
    cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
    chmod 0600 ~/.ssh/authorized_keys

    格式化hdfs

    /root/hadoop-3.1.4/bin/hdfs namenode -format


    image.png

    修改hdfs启动脚本:

    vim /root/hadoop-3.1.4/sbin/start-dfs.sh

    顶部增加4行
    HDFS_DATANODE_USER=root
    HADOOP_SECURE_DN_USER=hdfs
    HDFS_NAMENODE_USER=root
    HDFS_SECONDARYNAMENODE_USER=root


    image.png

    修改hdfs停止脚本:

    vim /root/hadoop-3.1.4/sbin/stop-dfs.sh

    顶部增加4行
    HDFS_DATANODE_USER=root
    HADOOP_SECURE_DN_USER=hdfs
    HDFS_NAMENODE_USER=root
    HDFS_SECONDARYNAMENODE_USER=root

    修改yarn启动脚本:

    vim /root/hadoop-3.1.4/sbin/start-yarn.sh

    顶部增加3行
    YARN_RESOURCEMANAGER_USER=root
    HADOOP_SECURE_DN_USER=yarn
    YARN_NODEMANAGER_USER=root

    修改yarn停止脚本:

    vim /root/hadoop-3.1.4/sbin/stop-yarn.sh

    顶部增加3行
    YARN_RESOURCEMANAGER_USER=root
    HADOOP_SECURE_DN_USER=yarn
    YARN_NODEMANAGER_USER=root

    启动hdfs

    export JAVA_HOME=/usr/lib/jvm/jre
    (停止脚本:/root/hadoop-3.1.4/sbin/stop-dfs.sh)
    /root/hadoop-3.1.4/sbin/start-dfs.sh

    浏览器访问验证
    地址:http://8.134.80.143:50070/


    image.png

    启动yarn
    (停止脚本:/root/hadoop-3.1.4/sbin/stop-yarn.sh)

    /root/hadoop-3.1.4/sbin/start-yarn.sh

    浏览器访问验证
    地址:http://8.134.80.143:8088/

    image.png

    hadoop 安装完成。

    安装mysql

    hive 运行需要mysql
    下载mysql源

    wget -i -c http://dev.mysql.com/get/mysql57-community-release-el7-10.noarch.rpm
    安装mysql源
    yum -y install mysql57-community-release-el7-10.noarch.rpm

    安装MySQL

    yum -y install mysql-server mysql

    启动(停止/重启/查看状态) start(/stop/restart/status) MySQL 服务

    systemctl start mysqld

    修改mysql配置文件:

    vim /etc/my.cnf
    末尾增加:
    skip-grant-tables
    [mysql]
    default-character-set =utf8


    image.png

    重启mysql

    systemctl restart mysqld

    登陆mysql,修改root密码,设置登陆ip。

    mysql -u root -p
    (密码因为还没设置,直接回车)


    image.png

    设置密码:

    use mysql;
    update user set host = '%';
    set password for 'root'@'localhost' =password('q1w2e3r4');
    flush privileges;

    重新修改配置文件:

    vim /etc/my.cnf
    注释掉:#skip-grant-tables

    重启mysql:

    systemctl restart mysqld

    用 本地navicat 连接mysql,测试mysql是否安装成功

    image.png

    再navicat里面创建名称为hive的数据库


    image.png

    mysql安装完成。

    安装hive

    hive 运行依赖hadoop、mysql,前面已经安装好了。
    下载hive

    wget https://mirrors.tuna.tsinghua.edu.cn/apache/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz

    解压:

    tar -zxvf apache-hive-3.1.2-bin.tar.gz

    修改环境变量

    vim /etc/profile

    添加:

    export HIVE_HOME=/root/apache-hive-3.1.2-bin
    export HIVE_CONF_DIR=${HIVE_HOME}/conf
    export CLASSPATH=.$CLASSPATH:$HIVE_HOME/lib
    export PATH=$PATH:$HIVE_HOME/bin
    

    刷新环境变量:

    source /etc/profile

    hadoop下建立路径并授权

    hadoop fs -mkdir -p /var/hive/warehouse
    hadoop fs -mkdir -p /var/hive/tmp
    hadoop fs -mkdir -p /tmp/hive
    hadoop fs -chmod 777 /var/hive/warehouse
    hadoop fs -chmod 777 /var/hive/tmp
    hadoop fs -chmod 777 /tmp/hive

    修改hive配置文件

    复制文件

    cp /root/apache-hive-3.1.2-bin/conf/hive-env.sh.template /root/apache-hive-3.1.2-bin/conf/hive-env.sh
    cp /root/apache-hive-3.1.2-bin/conf/hive-default.xml.template /root/apache-hive-3.1.2-bin/conf/hive-site.xml

    替换冲突jar

    cp /root/hadoop-3.1.4/share/hadoop/common/lib/guava-27.0-jre.jar /root/apache-hive-3.1.2-bin/lib/guava-27.0-jre.jar
    mv /root/apache-hive-3.1.2-bin/lib/guava-19.0.jar /root/apache-hive-3.1.2-bin/lib/guava-19.0.jar-old

    下载、复制mysql 驱动jar
    安装zip

    yum -y install zip unzip

    下载驱动

    wget https://cdn.mysql.com//archives/mysql-connector-java-5.1/mysql-connector-java-5.1.46.zip

    解压

    unzip mysql-connector-java-5.1.46.zip

    复制

    cp /root/mysql-connector-java-5.1.46/mysql-connector-java-5.1.46-bin.jar /root/apache-hive-3.1.2-bin/lib/mysql-connector-java-5.1.46-bin.jar

    vim /root/apache-hive-3.1.2-bin/conf/hive-env.sh

    修改3处(没有就添加)

    export HADOOP_HOME=/root/hadoop-3.1.4
    export HIVE_CONF_DIR=/root/apache-hive-3.1.2-bin/conf
    export HIVE_AUX_JARS_PATH=/root/apache-hive-3.1.2-bin/lib
    

    修改hive-site.xml文件-建议sftp下载到本地,用文本编辑器修改,需要修改的内容过多。
    文件路径是:/root/apache-hive-3.1.2-bin/conf/hive-site.xml
    涉及如下内容的节点都需要找到并修改:

    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/var/hive/warehouse</value>
        <description>location of default database for the warehouse</description>
      </property>
    <property>
        <name>hive.exec.scratchdir</name>
        <value>/tmp/hive</value>
        <description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/&lt;username&gt; is created, with ${hive.scratch.dir.permission}.</description>
      </property>
    <property>
        <name>hive.exec.local.scratchdir</name>
        <value>/var/hive/tmp/root</value>
        <description>Local scratch space for Hive jobs</description>
      </property>
    <property>
        <name>hive.exec.local.scratchdir</name>
        <value>/var/hive/tmp/root</value>
        <description>Local scratch space for Hive jobs</description>
      </property>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>
        <description>
         
        </description>
      </property>
    
      <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
        <description>Driver class name for a JDBC metastore</description>
      </property>
    
      <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
        <description>Username to use against metastore database</description>
      </property>
    
      <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>******</value>
        <description>password to use against metastore database</description>
      </property>
    
      <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
        <description>
          Enforce metastore schema version consistency.
          True: Verify that version information stored in is compatible with one from Hive jars.  Also disable automatic
                schema migration attempt. Users are required to manually migrate schema after Hive upgrade which ensures
                proper metastore schema migration. (Default)
          False: Warn if the version information stored in metastore doesn't match with one from in Hive jars.
        </description>
      </property>
    <property>
        <name>hive.txn.xlock.iow</name>
        <value>true</value>
        <description>
          
        </description>
      </property>
    

    注意
    上面的节点,hive.txn.xlock.iow是要删除description内容,javax.jdo.option.ConnectionPassword填写mysql root用户的密码。
    除了上面的节点,还需要全文查找${system:user.name}替换为root,全文查找${system:java.io.tmpdir}替换为/var/hive/tmp

    修改完后记得上传到服务器覆盖文件。

    初始化hive

    schematool -initSchema -dbType mysql

    启动hive
    hive 启动一定需要机器有足够内存,内存不够会自动killed,hive启动直接进入sql界面。

    /root/apache-hive-3.1.2-bin/bin/hive

    进入hive后先设置本地运行:

    set hive.exec.mode.local.auto=true;

    创建表:

    create table tb_1(t1 string);

    插入数据:

    insert into tb_1(t1) values('s23');

    查询数据:

    select t1 from tb_1;

    退出hive:

    exit;

    数据导出到文件:

    /root/apache-hive-3.1.2-bin/bin/hive -e "select * from tb_1" >/root/tb_1.txt

    hive还有一个远程服务和web管理界面
    启动web界面(这个web界面没什么功能,就能看下服务是否启动),主要测试远程服务

    /root/apache-hive-3.1.2-bin/bin/hive --service hiveserver2

    浏览器访问:


    image.png

    启动服务后,10000端口可以进行远程连接,前面是hive直接写sql,现在启动远程连接后,可以beeline去连接,beeline展示信息会友好很多。
    beeline 连接:

    beeline -u jdbc:hive2://localhost:10000

    beeline执行查询语句:

    select * from tb_1;


    image.png

    测试成功,部署调用完成。

    本来这篇已经结束了,有人咨询,是否有navicat,plsql 类似这样的客户端连接hive,这里说一下,

    启动了远程连接服务后就能用客户端远程连接操作(/root/apache-hive-3.1.2-bin/bin/hive --service hiveserver2)
    工具使用squirrel,就是一个可以双击运行的jar包,官网下最新的就可以了。
    顺序和逻辑: 下载客户端---到安装hive的服务器下载驱动(有个jdbc目录,已经帮你把驱动包封装好了)--本地安装客户端--本地添加服务器下载的驱动,取名hive---新建连接--填写连接地址连接。

    下载客户端
    下载地址:https://nchc.dl.sourceforge.net/project/squirrel-sql/1-stable/4.1.0/squirrel-sql-4.1.0-standard.jar
    如果嫌下载慢,可以从我港区地址下载(如果不能用了就从官网地址下载),我嫌弃慢,在我港区服务器上做了一层cdn:https://p9pan.cn/cdn/squirrel-sql-4.1.0-standard.jar

    双击运行就可以安装,安装除了安装路径,其它所有选项默认就可以了,不用选什么msyql、oracle什么的。

    我安装在D盘:D:\Program Files\squirrel\squirrel-sql-4.1.0
    进入目录,双击squirrel-sql.bat 运行squirrel,打开后是这样的。


    image.png

    左边有一个驱动,一个连接会话 两个tab,需要先添加驱动,再添加会话。


    image.png

    先去安装hive的服务器把驱动下载下来(不要从百度搜下载,网络下载hive版本有区别,容易产生未知问题)。
    下载驱动
    驱动文件官网已经整理好了,就一个jar包,文件在:
    /root/apache-hive-3.1.2-bin/jdbc/hive-jdbc-3.1.2-standalone.jar

    image.png

    下载到本地后就配置驱动
    点击drivers 点击加号进去配置

    image.png

    填写的信息:
    名称:hive
    地址(8.134.80.143是阿里云服务器公网地址):jdbc:hive2://8.134.80.143:10000
    类名:org.apache.hive.jdbc.HiveDriver

    image.png

    配置顺利后,左侧驱动会显示 勾。


    image.png

    切换到连接会话tab,添加连接:
    填写连接名称、选择hive、 地址(8.134.80.143是阿里云服务器公网地址):jdbc:hive2://8.134.80.143:10000

    用户名和密码空着--点击连接。

    *****************************注意*******************************
    只做查询操作,不用用户名和密码,
    但如果需要更新数据,就需要使用用户,用户可以用root,
    密码是创建mysql用户时mysql的用户和密码。
    和hive里面一样,更新操作会话
    先执行set hive.exec.mode.local.auto=true;
    然后再执行更新操作。
    
    image.png image.png

    成功连接hive

    image.png

    写sql
    切换到sql tab页,就可以写sql了,和navicat、plsql相仿,回到了sql96状态, 执行sql查询:select * from tb_1,点击黑色跑步一样的图标就是执行sql。

    image.png

    界面对照navicat 、plsql的功能找位置几分钟就上手,不细讲。

    SpringBoot接入调用

    添加springboot连接hive,操作演示jdbc查询数据。

    引用

    pom文件引入

     <!-- hive -->
            <dependency>
                <groupId>org.apache.hive</groupId>
                <artifactId>hive-jdbc</artifactId>
                <version>3.1.2</version>
                <exclusions>
                    <exclusion>
                        <groupId>ch.qos.logback</groupId>
                        <artifactId>logback-classic</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.apache.logging.log4j</groupId>
                        <artifactId>log4j-slf4j-impl</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-log4j12</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.eclipse.jetty</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.eclipse.jetty.orbit</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.eclipse.jetty.aggregate</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>tomcat</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>javax.servlet</groupId>
                        <artifactId>servlet-api</artifactId>
                    </exclusion>
                    <exclusion>
                        <groupId>org.mortbay.jetty</groupId>
                        <artifactId>*</artifactId>
                    </exclusion>
                </exclusions>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid</artifactId>
                <version>1.1.10</version>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-jdbc</artifactId>
            </dependency>
    
    

    注意:千万不要直接引用-org.apache.hive -hive-jdbc依赖,需要加上exclusions,因为hive自身的依赖jar会与springboot的tomcat冲突,导致启动报错。

    配置文件application.yaml 的hive服务器参数

    内容(8.134.80.143是阿里云公网IP):

    hive:
      url: jdbc:hive2://8.134.80.143:10000
      driver-class-name: org.apache.hive.jdbc.HiveDriver
      type: com.alibaba.druid.pool.DruidDataSource
      user: root
      password: q1w2e3r4
      initialSize: 1
      minIdle: 3
      maxActive: 20
      maxWait: 60000
      timeBetweenEvictionRunsMillis: 60000
      minEvictableIdleTimeMillis: 30000
      validationQuery: select 1
      testWhileIdle: true
      testOnBorrow: false
      testOnReturn: false
      poolPreparedStatements: true
      maxPoolPreparedStatementPerConnectionSize: 20
      connectionErrorRetryAttempts: 0
      breakAfterAcquireFailure: true
    
    
    image.png

    创建hive操作和测试类

    连接配置类-HiveDruidConfig:
    内容:

    
    import com.alibaba.druid.pool.DruidDataSource;
    import lombok.Data;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.jdbc.core.JdbcTemplate;
    import javax.sql.DataSource;
    
    @Data
    @Configuration
    @ConfigurationProperties(prefix = "hive")
    public class HiveDruidConfig {
    
        private String url;
        private String user;
        private String password;
        private String driverClassName;
        private int initialSize;
        private int minIdle;
        private int maxActive;
        private int maxWait;
        private int timeBetweenEvictionRunsMillis;
        private int minEvictableIdleTimeMillis;
        private String validationQuery;
        private boolean testWhileIdle;
        private boolean testOnBorrow;
        private boolean testOnReturn;
        private boolean poolPreparedStatements;
        private int maxPoolPreparedStatementPerConnectionSize;
        private int connectionErrorRetryAttempts;
        private boolean breakAfterAcquireFailure;
    
        @Bean(name = "hiveDruidDataSource")
        @Qualifier("hiveDruidDataSource")
        public DataSource dataSource() {
            DruidDataSource datasource = new DruidDataSource();
            datasource.setUrl(url);
            datasource.setUsername(user);
            datasource.setPassword(password);
            datasource.setDriverClassName(driverClassName);
            datasource.setInitialSize(initialSize);
            datasource.setMinIdle(minIdle);
            datasource.setMaxActive(maxActive);
            datasource.setMaxWait(maxWait);
            datasource.setTimeBetweenEvictionRunsMillis(timeBetweenEvictionRunsMillis);
            datasource.setMinEvictableIdleTimeMillis(minEvictableIdleTimeMillis);
            datasource.setValidationQuery(validationQuery);
            datasource.setTestWhileIdle(testWhileIdle);
            datasource.setTestOnBorrow(testOnBorrow);
            datasource.setTestOnReturn(testOnReturn);
            datasource.setPoolPreparedStatements(poolPreparedStatements);
            datasource.setMaxPoolPreparedStatementPerConnectionSize(maxPoolPreparedStatementPerConnectionSize);
            datasource.setConnectionErrorRetryAttempts(connectionErrorRetryAttempts);
            datasource.setBreakAfterAcquireFailure(breakAfterAcquireFailure);
            return datasource;
        }
    
        @Bean(name = "hiveDruidTemplate")
        public JdbcTemplate hiveDruidTemplate(@Qualifier("hiveDruidDataSource") DataSource dataSource) {
            return new JdbcTemplate(dataSource);
        }
    
    }
    
    

    业务实现类-HiveService:

    
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.beans.factory.annotation.Qualifier;
    import org.springframework.stereotype.Service;
    
    import javax.sql.DataSource;
    import java.sql.*;
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    @Slf4j
    @Service
    public class HiveService {
    
        @Autowired
        @Qualifier("hiveDruidDataSource")
        private DataSource druidDataSource;
    
        private String tableName = "tb_1";
    
    
        public  Map queryHiveData() {
            String sqlString = "select * from "+tableName;
            Connection conn = null;
            Statement statement = null;
            ResultSet rs = null;
            Map result = new HashMap();
            try {
                conn = druidDataSource.getConnection();
                statement = conn.createStatement();
                List list = new ArrayList();
                rs = statement.executeQuery(sqlString.toString());
                ResultSetMetaData metaData = rs.getMetaData();
                int columnCount = metaData.getColumnCount();
                while (rs.next()) {
                    Map obj = new HashMap();
                    // 遍历每一列
                    for (int i = 1; i <= columnCount; i++) {
                        String columnName = metaData.getColumnLabel(i);
                        String value = rs.getString(columnName);
                        obj.put(columnName, value);
                        list.add(obj);
                    }
                    list.add(obj);
                }
                result.put("data", list);
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {
                try {
                    conn.close();
                    statement.close();
                    rs.close();
                } catch (SQLException e) {
                    e.printStackTrace();
                }
            }
            return result;
        }
    }
    
    

    业务类查询,查询的是前面步骤hive后台创建的表 tb_1,自己写的时候根据自己创建的表修改表名。

    hive的controller测试类-HiveController:

    
    import lombok.extern.slf4j.Slf4j;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.web.bind.annotation.RequestMapping;
    import org.springframework.web.bind.annotation.RestController;
    
    import java.util.Map;
    
    @Slf4j
    @RestController
    public class HiveController {
    
        @Autowired
        private HiveService hiveService;
    
    
        @RequestMapping("hiveQuery")
        public Map query(){
            Map info = hiveService.queryHiveData();
            return info;
        }
    
    
    }
    

    目录结构:


    image.png

    测试

    浏览器访问查询接口:http://localhost:8080/hiveQuery
    查询tb_1 表的数据。

    image.png

    测试结束。

    相关文章

      网友评论

          本文标题:阿里云-centos7-单机安装部署zookeeper+Hado

          本文链接:https://www.haomeiwen.com/subject/cblwaktx.html