linux下hiveの3つの方法のインストール


今回はapache-hive-1.2.1-bin.tar.gzを例に
サーバnode 5192.168.13.135
サーバnode 6192.168.13.136
サーバnode 7192.168.13.137
サーバnode 8192.168.13.138
一、ローカル内蔵derbyモード1を構成する.hiveをlinuxにアップロード(/opt/sxt/soft)2.tar-zxvf apache-hive-1.2.1-binを解凍する.tar.gz3.プロファイル(/opt/sxt/soft/apache-hive-1.2.1-bin/conf)
1)cp hive-default.xml.template hive-site.xml2)vi hive-site.xml
  
    javax.jdo.option.ConnectionURL  
    jdbc:derby:;databaseName=metastore_db;create=true  
  
  
    javax.jdo.option.ConnectionDriverName  
    org.apache.derby.jdbc.EmbeddedDriver  
   
  
    hive.metastore.local  
    true  
    
  
    hive.metastore.warehouse.dir  
    /user/hive/warehouse  

4.環境変数(再ロード)vi~/を配置する.bash_profileexport HIVE_HOME=/opt/sxt/soft/apache-hive-1.2.1-binexport PATH=$PATH:$HIVE_HOME/binsource ~/.bash_profile5.hive 1を起動するには、hdfsとyarn(start-all.sh start)を正常に起動する必要があります.ブラウザでnode 5/8:50070を確認し、node 5/8:80882)HADOOP_を変更します.HOMElibディレクトリの下のjline-*.JArがHIVE_になるHOMElibの下のjline-2.12.JAr hadoopとhiveのjlineバージョンが一致していることを確認hadoopのjarパッケージパスは:share/hadoop/yarn/lib 3)起動:hive注意:derbyストレージ方式を使用すると、hiveを実行すると現在のディレクトリにderbyファイルとmetastore_が生成されます.dbディレクトリ.このストレージ方式の弊害は、同じディレクトリの下でhiveクライアントが1つしかデータベースを使用できないことです.
二、ローカルmysqlモードを配置する(使用を推奨し、ローカルは接続可能なipアドレスサーバを指す).プロファイルvi/opt/sxt/soft/apache-hive-1.2.1-bin/conf/hive-siteを変更します.xml derbyの構成時の内容を削除し、
  
    hive.metastore.warehouse.dir  
    /user/hive_remote/warehouse  
   
  
    hive.metastore.local  
    true  
   
  
    javax.jdo.option.ConnectionURL  
    jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true  
  
  
    javax.jdo.option.ConnectionDriverName  
    com.mysql.jdbc.Driver  
  
  
    javax.jdo.option.ConnectionUserName  
    root  
  
  
    javax.jdo.option.ConnectionPassword  
    1234  
  

2.mysqlドライバjarパッケージをコピーするにはmysql(今回mysql-connector-java-5.1.32-bin.jar)のjarパッケージを$HIVE_にコピーする必要があります.HOME/libディレクトリの下3.mysqlservice mysqld start 4を起動します.hiveの起動(データベースが開いていることを確認)hive
三、リモートmysqlの構成
1)remote一体(未測定)
このストレージ方式では、リモートサーバでmysqlサーバを実行し、Hiveサーバでmetaサービスを開始する必要があります.ここではmysqlのテストサーバを使って、
ipビット192.168.13.138、新規hive_remoteデータベース、文字セットビットlatine 1
  
  
  
  
  hive.metastore.warehouse.dir  
  /user/hive/warehouse  
  
  
  javax.jdo.option.ConnectionURL  
  jdbc:mysql://192.168.13.135:3306/hive?createDatabaseIfNotExist=true  
  
  
  javax.jdo.option.ConnectionDriverName  
  com.mysql.jdbc.Driver  
  
  
  javax.jdo.option.ConnectionUserName  
  root  
  
  
  javax.jdo.option.ConnectionPassword  
  1234  
  
  
  hive.metastore.local  
  false  
  
  
  hive.metastore.uris  
  thrift://192.168.13.138:9083  
  
  
注:hiveのサービス側とクライアントを同じサーバに配置しました.サービス側とクライアントは取り外し可能です.
2)remote分割
1.上記のように、node 8(任意の別のノード)にhiveを正常にインストール
2.node 8のhive-siteを修正する.xml(サービス側プロファイル)
vi/opt/sxt/soft/apache-hive-1.2.1-bin/conf/hive-site.xml、内容は
  
  
  
  
  hive.metastore.warehouse.dir  
  /user/hive/warehouse  
  
  
  javax.jdo.option.ConnectionURL  
  jdbc:mysql://192.168.13.135:3306/hive?createDatabaseIfNotExist=true  
    //192.168.13.135:3306   mysql    ,    135
   
  
  javax.jdo.option.ConnectionDriverName  
  com.mysql.jdbc.Driver  
   
  
  javax.jdo.option.ConnectionUserName  
  root  
  
  
  javax.jdo.option.ConnectionPassword  
  1234  
  
3.hiveサービス・エンド・プログラムの起動(node 8)
 
hive --service metastore   
4.node 5のhive-siteを修正する.xml(クライアントプロファイル)
vi/opt/sxt/soft/apache-hive-1.2.1-bin/conf/hive-site.xml、内容は
  
  
  
  
  hive.metastore.warehouse.dir  
  /user/hive/warehouse  
  
  
  hive.metastore.local  
  false  
  
  
  hive.metastore.uris  
  thrift://192.168.13.138:9083  
  
 
5.クライアントはhiveコマンドを直接使用すればよい(node 5)
hive
hive> show tables;
OK
Time taken: 0.707 seconds
hive>
6.hiveserverライブラリの起動
$HIVE_HOME/bin/hiveserver 2または$HIVE_HOME/bin/hive --service hiveserver2
7.hiveserverライブラリへの接続
1)beeline方式
   
beeline
    beeline>!connect jdbc:hive2://localhost:10000 root org.apache.hive.jdbc.HiveDriverまたは
    beeline>!connect jdbc:hive2://localhost:10000/default
2)クライアント接続(JDBC)
public class TestHive2 {
public static void main(String[] args) {
		try {
			Class.forName("org.apache.hive.jdbc.HiveDriver");
			Connection conn = DriverManager.getConnection("jdbc:hive2://192.168.13.135:10000/default","root","");
			Statement stmt = conn.createStatement();
			ResultSet resultSet = stmt.executeQuery("select count(*) from people");
			if(resultSet.next()){
				System.out.println(resultSet.getInt(1));
			}
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

補足:
1)loadローカル(local)データからデータベースへ
   load data local inpath ‘/opt/sxt/temp/test.txt’ into table people PARTITION (dt=’2016-1-1’);(ダイレクトコピーでエラー)
2)例としていくつかの表(DDL)を作成する
1.CREATE TABLE page_view(    page_url STRING,    ip STRING  )  ROW FORMAT DELIMITED  FIELDS TERMINATED BY '\t'  STORED AS TEXTFILE;データは次のとおりです:(-->タブ、すなわち't')Node 1->192.168.13.1 Node 2->192.168.13.22.CREATE TABLE people(id STRING,name STRING,likes Array,addr Map  )  PARTITIONED BY(dt STRING)  ROW FORMAT DELIMITED  FIELDS TERMINATED BY '\t'  COLLECTION ITEMS TERMINATED BY ‘,’  MAP KEYS TERMINATED BY ‘:’  STORED AS TEXTFILE;データは以下の通りである:1->zs->game,girl,money-->stuAddr:nantong,workAddr:tongzhou-->2017-1 2->ls-->game,girl,money-->stuAddr:nantong,workAddr:tongzhou-->2017-1 select addr[‘stuAddr’]from people where name=’zs;3.あるテーブルからデータをクエリーして別のテーブルに置く内表と外表の違い:内表drop後データは破棄され、外表drop後データはhdfs上にある.内表データはhiveが管理し,外観データは別の場所に格納する.  CREATE [EXTERNAL] TABLE people_test(id STRING,    name STRING,likes Array  )  ROW FORMAT DELIMITEDFIELDS TERMINATED BY '\t'   COLLECTION ITEMS TERMINATED BY ‘,’  STORED AS TEXTFILE;
INSERT OVERWRITE TABLE people_test select id,name,likes FROM people where name=’zs’;
//テーブルをクリアINSERT OVERWRITE TABLE people_test select id,name,likes FROM people where 1=2;UPDATE people_test SET name = ‘ls’ where name=’zs’;//パーティションALTER TABLE people DROP IF EXISTS PARTITION(dt=’2016-1-1’)を削除する.