linux下hiveの3つの方法のインストール
7868 ワード
今回は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
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の構成時の内容を削除し、
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
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 --service metastore
4.node 5のhive-siteを修正する.xml(クライアントプロファイル)
vi/opt/sxt/soft/apache-hive-1.2.1-bin/conf/hive-site.xml、内容は
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)
補足:
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’)を削除する.
サーバ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’)を削除する.