zoukankan      html  css  js  c++  java
  • Hive-ha (十三)

    hive—high Avaliable

    ​ hive的搭建方式有三种,分别是

    ​ 1、Local/Embedded Metastore Database (Derby)

    ​ 2、Remote Metastore Database

    ​ 3、Remote Metastore Server

    ​ 一般情况下,我们在学习的时候直接使用hive –service metastore的方式启动服务端,使用hive的方式直接访问登录客户端,除了这种方式之外,hive提供了hiveserver2的服务端启动方式,提供了beeline和jdbc的支持,并且官网也提出,一般在生产环境中,使用hiveserver2的方式比较多,如图:

    hiveserver2

    使用hiveserver2的优点如下:

    ​ 1、在应用端不需要部署hadoop和hive的客户端

    ​ 2、hiveserver2不用直接将hdfs和metastore暴露给用户

    ​ 3、有HA机制,解决应用端的并发和负载问题

    ​ 4、jdbc的连接方式,可以使用任何语言,方便与应用进行数据交互

    本文档主要介绍如何进行hive的HA的搭建:

    如何进行搭建,参照之前hadoop的HA,使用zookeeper完成HA

    hive HA

    1、环境如下:

    Node01 Node02 Node03 Node04
    Namenode 1 1
    Journalnode 1 1 1
    Datanode 1 1 1
    Zkfc 1 1
    zookeeper 1 1 1
    resourcemanager 1 1 1
    nodemanager 1 1 1
    Hiveserver2 1
    beeline 1

    2、node02—hive-site.xml

    <property>  
      <name>hive.metastore.warehouse.dir</name>  
      <value>/user/hive/warehouse</value>  
    </property>  
    <property>  
      <name>javax.jdo.option.ConnectionURL</name>  
      <value>jdbc:mysql://node01:3306/hive?createDatabaseIfNotExist=true</value>  
    </property>  
    <property>  
      <name>javax.jdo.option.ConnectionDriverName</name>  
      <value>com.mysql.jdbc.Driver</value>  
    </property>     
    <property>  
      <name>javax.jdo.option.ConnectionUserName</name>  
      <value>root</value>  
    </property>  
    <property>  
      <name>javax.jdo.option.ConnectionPassword</name>  
      <value>123</value>  
    </property>
    <property>
      <name>hive.server2.support.dynamic.service.discovery</name>
      <value>true</value>
    </property>
    <property>
      <name>hive.server2.zookeeper.namespace</name>
      <value>hiveserver2_zk</value>
    </property>
    <property>
      <name>hive.zookeeper.quorum</name>
      <value>node01:2181,node02:2181,node03:2181</value>
    </property>
    <property>
      <name>hive.zookeeper.client.port</name>
      <value>2181</value>
    </property>
    <property>
      <name>hive.server2.thrift.bind.host</name>
      <value>node02</value>
    </property>
    <property>
      <name>hive.server2.thrift.port</name>
      <value>10001</value> 
    </property>
    

    3、node4—hive-site.xml

    <property>  
      <name>hive.metastore.warehouse.dir</name>  
      <value>/user/hive/warehouse</value>  
    </property>  
    <property>  
      <name>javax.jdo.option.ConnectionURL</name>  
      <value>jdbc:mysql://node01:3306/hive?createDatabaseIfNotExist=true</value>  
    </property>  
    <property>  
      <name>javax.jdo.option.ConnectionDriverName</name>  
      <value>com.mysql.jdbc.Driver</value>  
    </property>     
    <property>  
      <name>javax.jdo.option.ConnectionUserName</name>  
      <value>root</value>  
    </property>  
    <property>  
      <name>javax.jdo.option.ConnectionPassword</name>  
      <value>123</value>  
    </property>
    <property>
      <name>hive.server2.support.dynamic.service.discovery</name>
      <value>true</value>
    </property>
    <property>
      <name>hive.server2.zookeeper.namespace</name>
      <value>hiveserver2_zk</value>
    </property>
    <property>
      <name>hive.zookeeper.quorum</name>
      <value>node01:2181,node02:2181,node03:2181</value>
    </property>
    <property>
      <name>hive.zookeeper.client.port</name>
      <value>2181</value>
    </property>
    <property>
      <name>hive.server2.thrift.bind.host</name>
      <value>node04</value>
    </property>
    <property>
      <name>hive.server2.thrift.port</name>
      <value>10001</value> 
    </property>
    

    4、使用jdbc或者beeline两种方式进行访问

    1) beeline

    !connect jdbc:hive2://node01,node02,node03/;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2_zk root 123

    2)jdbc

    public class HiveJdbcClient2 {
    
    	private static String driverName = "org.apache.hive.jdbc.HiveDriver";
    
    	public static void main(String[] args) throws SQLException {
    		try {
    			Class.forName(driverName);
    		} catch (ClassNotFoundException e) {
    			e.printStackTrace();
    		}
    
    		Connection conn = DriverManager.getConnection("jdbc:hive2://node01,node02,node03/default;serviceDiscoveryMode=zooKeeper;zooKeeperNamespace=hiveserver2_zk", "root", "");
    		Statement stmt = conn.createStatement();
    		String sql = "select * from tbl";
    		ResultSet res = stmt.executeQuery(sql);
    		while (res.next()) {
    			System.out.println(res.getString(1));
    		}
    	}
    }
    

  • 相关阅读:
    WPF 自定义CheckBox样式
    WPF中的动画——(二)From/To/By 动画
    C# 异步编程
    C# 二维码生成 ( QRCoder )
    ASP.NET Core中的依赖注入(2):依赖注入(DI)
    从零搭建分布式文件系统MinIO比FastDFS要更合适
    WPF : ControlTemplate和DataTemplate的区别
    wpf 中 theme 的使用 和 listview 模板的使用.
    wpf 中的DataTemplate 绑定控件
    HTTP状态码含义
  • 原文地址:https://www.cnblogs.com/littlepage/p/11439235.html
Copyright © 2011-2022 走看看