本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Amazon EMR 舊版 AMI 的 Hive 應用程式詳細資訊
日誌檔
使用 Amazon EMR AMI 版本 2.x 和 3.x ,Hive 日誌會儲存至 /mnt/var/log/apps/
。為了支援 Hive 並行版本,您執行的 Hive 版本會決定日誌檔名稱,如下表所示。
Hive 版本 | 日誌檔案名稱 |
---|---|
0.13.1 | hive.log
注意從這個版本開始,Amazon EMR 使用的是無版本控制的檔案名稱 |
0.11.0 | hive_0110.log
注意Hive 0.11.0 次要版本 (例如 0.11.0.1) 會共用與 Hive 0.11.0 相同的日誌檔位置。 |
0.8.1 | hive_081.log
注意Hive 0.8.1 次要版本 (例如 Hive 0.8.1.1) 會共用與 Hive 0.8.1 相同的日誌檔位置。 |
0.7.1 | hive_07_1.log
注意Hive 0.7.1 次要版本 (例如 Hive 0.7.1.3 和 Hive 0.7.1.4) 會共用與 Hive 0.7.1 相同的日誌檔位置。 |
0.7 | hive_07.log |
0.5 | hive_05.log |
0.4 | hive.log |
分割輸入功能
為了使用早於 0.13.1 的 Hive 版本 (早於 3.11.0 的 Amazon EMR AMI 版本) 實作分割輸入功能,請使用下列步驟:
hive> set hive.input.format=org.apache.hadoop.hive.ql.io.HiveCombineSplitsInputFormat; hive> set mapred.min.split.size=
100000000
;
Hive 0.13.1 已淘汰此功能。若要取得 Amazon EMR AMI 版本 3.11.0 的相同分割輸入格式功能,請使用下列功能:
set hive.hadoop.supports.splittable.combineinputformat=true;
Thrift 服務連接埠
Thrift 是 RPC 架構,其定義精巧二進位序列化格式,此格式會用來保留資料結構以供後續分析之用。一般而言,Hive 會將伺服器設定為在以下連接埠操作。
Hive 版本 | 連接埠號碼 |
---|---|
Hive 0.13.1 | 10000 |
Hive 0.11.0 | 10004 |
Hive 0.8.1 | 10003 |
Hive 0.7.1 | 10002 |
Hive 0.7 | 10001 |
Hive 0.5 | 10000 |
如需 thrift 服務的詳細資訊,請參閱 http://wiki.apache.org/thrift/
使用 Hive 來復原分割區
Amazon EMR 包括以 Hive 查詢語言的陳述式,其會將資料表分割區從位於 Amazon S3 中的資料表資料中恢復。此如下列範例所示:
CREATE EXTERNAL TABLE (json string) raw_impression
PARTITIONED BY (dt string)
LOCATION 's3://elastic-mapreduce/samples/hive-ads/tables/impressions';
ALTER TABLE logs RECOVER PARTITIONS;
分割區目錄和資料必須在資料表定義中指定的位置且必須根據 Hive 慣例命名:例如 dt=2009-01-01
。
注意
在 Hive 0.13.1 之後,系統原生會使用 msck
repair
支援此功能,因此 table
recover
partitions
不受支援。如需詳細資訊,請參閱 https://cwiki.apache.org/confluence/display/Hive/LanguageManual+DDL
將 Hive 變數傳遞到指令碼
若要使用 將變數傳遞至 Hive 步驟 AWS CLI,請輸入下列命令,將 myKey
取代為您的 EC2 金鑰對名稱,並將 amzn-s3-demo-bucket
取代為您的儲存貯體名稱。在這個範例中,SAMPLE
是一個變動值,前綴為 -d
變數。此變數會在 Hive 指令碼定義為:${SAMPLE}
。
注意
包含 Linux 行接續字元 (\) 是為了提高可讀性。它們可以在 Linux 命令中移除或使用。對於 Windows,請將其移除或取代為插入符號 (^)。
aws emr create-cluster --name "
Test cluster
" --ami-version3.9
\ --applications Name=Hue
Name=Hive
Name=Pig
\ --use-default-roles --ec2-attributes KeyName=myKey
\ --instance-typem3.xlarge
--instance-count3
\ --steps Type=Hive
,Name="Hive Program
",ActionOnFailure=CONTINUE
,\ Args=[-f,s3://elasticmapreduce/samples/hive-ads/libs/response-time-stats.q
,-d,\ INPUT=s3://elasticmapreduce/samples/hive-ads/tables
,-d,OUTPUT=s3://amzn-s3-demo-bucket/hive-ads/output/
,\ -d,SAMPLE
=s3://elasticmapreduce/samples/hive-ads/
]
指定外部中繼存放區位置
下列程序說明如何為 Hive 中繼存放區位置覆寫預設組態值,並使用重新設定的中繼存放區位置來啟動叢集。
若要建立位於 EMR 叢集之外的中繼存放區
-
使用 Amazon RDS 建立 MySQL 或 Aurora 資料庫。
有關如何建立 Amazon RDS 資料庫的詳細資訊,請參閱 Amazon RDS 入門。
-
修改您的安全群組以允許資料庫與 ElasticMapReduce-Master (ElasticMapReduce-Master) 安全群組之間的 JDBC 連線。
有關如何修改存取安全群組的詳細資訊,請參閱《Amazon RDS 使用者指南》中的 Amazon RDS 安全群組。
-
在
hive-site.xml
中設定 JDBC 設定值:-
建立內含以下項目的
hive-site.xml
組態檔:<configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mariadb://
hostname
:3306/hive?createDatabaseIfNotExist=true</value> <description>JDBC connect string for a JDBC metastore</description> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>hive</value> <description>Username to use against metastore database</description> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>password
</value> <description>Password to use against metastore database</description> </property> </configuration>hostname
是執行資料庫之 Amazon RDS 執行個體的 DNS 地址。username
和password
是您資料庫的登入資料。如需有關連線至 MySQL 和 Aurora 資料庫執行個體的詳細資訊,請參閱《Amazon RDS 使用者指南》中的連線至執行 MySQL 資料庫引擎的 DB 執行個體和連線至 Aurora DB 叢集。JDBC 驅動器由 Amazon EMR 安裝。
注意
值屬性不得包含空格或歸位。它應該顯示在單一列。
-
將
hive-site.xml
檔案儲存至 Amazon S3 上的位置 (例如s3://
)。amzn-s3-demo-bucket/
hive-site.xml
-
-
建立叢集,指定自訂
hive-site.xml
檔案的 Amazon S3 位置。下列範例命令示範執行此操作的 AWS CLI 命令。
注意
包含 Linux 行接續字元 (\) 是為了提高可讀性。它們可以在 Linux 命令中移除或使用。對於 Windows,請將其移除或取代為插入符號 (^)。
aws emr create-cluster --name "
Test cluster
" --ami-version3.10
\ --applications Name=Hue
Name=Hive
Name=Pig
\ --use-default-roles --ec2-attributes KeyName=myKey
\ --instance-typem3.xlarge
--instance-count3
\ --bootstrap-actions Name="Install Hive Site Configuration
",\ Path="s3://region
.elasticmapreduce/libs/hive/hive-script",\ Args=["--base-path","s3://elasticmapreduce/libs/hive","--install-hive-site",\ "--hive-site=s3://amzn-s3-demo-bucket
/hive-site.xml","--hive-versions","latest"]
使用 JDBC 連線至 Hive
若要透過 JDBC 連接到 Hive 需要下載 JDBC 驅動程式並安裝 SQL 用戶端。以下範例示範如何使用 SQL Workbench/J 以使用 JDBC 連接到 Hive。
下載 JDBC 驅動程式
-
下載和擷取您希望存取之 Hive 版本的適合驅動程式。Hive 的版本差異取決於您建立 Amazon EMR 叢集時選擇的 AMI。
-
Hive 0.13.1 JDBC 驅動程式:https://amazon-odbc-jdbc-drivers.s3.amazonaws.com/public/AmazonHiveJDBC_1.0.4.1004.zip
-
Hive 0.11.0 JDBC 驅動程式:https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc/0.11.0
-
Hive 0.8.1 JDBC 驅動程式:https://mvnrepository.com/artifact/org.apache.hive/hive-jdbc/0.8.1
-
-
安裝 SQL Workbench/J。如需更多資訊,請參閱 SQL Workbench/J 手冊使用者手冊中的安裝和啟動 SQL Workbench/J
。 -
建立到叢集主節點的 SSH 通道。根據 Hive 版本不同,連線的連接埠也有所不同。下表提供的範例命令適用於 Linux
ssh
使用者和 Windows 使用者的 PuTTY 命令Linux SSH 命令 Hive 版本 Command 0.13.1 ssh -o ServerAliveInterval=10 -i
path-to-key-file
-N -L 10000:localhost:10000 hadoop@master-public-dns-name
0.11.0 ssh -o ServerAliveInterval=10 -i
path-to-key-file
-N -L 10004:localhost:10004 hadoop@master-public-dns-name
0.8.1 ssh -o ServerAliveInterval=10 -i
path-to-key-file
-N -L 10003:localhost:10003 hadoop@master-public-dns-name
0.7.1 ssh -o ServerAliveInterval=10 -i
path-to-key-file
-N -L 10002:localhost:10002 hadoop@master-public-dns-name
0.7 ssh -o ServerAliveInterval=10 -i
path-to-key-file
-N -L 10001:localhost:10001 hadoop@master-public-dns-name
0.5 ssh -o ServerAliveInterval=10 -i
path-to-key-file
-N -L 10000:localhost:10000 hadoop@master-public-dns-name
Windows PuTTY 通道設定 Hive 版本 通道設定 0.13.1 Source port (來源連接埠):10000 Destination (目的地): master-public-dns-name (master-public-dns-name)
:100000.11.0 Source port (來源連接埠):10004 Destination (目的地): master-public-dns-name (master-public-dns-name)
:100040.8.1 Source port (來源連接埠):10003Destination (目的地): master-public-dns-name (master-public-dns-name)
:10003 -
將 JDBC 驅動程式新增到 SQL Workbench。
-
在 Select Connection Profile (選取連線設定檔) 對話方塊中,選擇 Manage Drivers (管理驅動程式)。
-
選擇 Create a new entry (建立新項目) (空白頁面) 圖示。
-
在 Name (名稱)欄位中,輸入
Hive JDBC
。 -
針對 Library (程式庫),按一下 Select the JAR file(s) (選取 JAR 檔案) 圖示。
-
如下表所示,選取 JAR 檔案。
Hive 驅動程式版本 要新增的 JAR 檔案 0.13.1 hive_metastore.jar hive_service.jar HiveJDBC3.jar libfb303-0.9.0.jar libthrift-0.9.0.jar log4j-1.2.14.jar ql.jar slf4j-api-1.5.8.jar slf4j-log4j12-1.5.8.jar TCLIServiceClient.jar
0.11.0 hadoop-core-1.0.3.jar hive-exec-0.11.0.jar hive-jdbc-0.11.0.jar hive-metastore-0.11.0.jar hive-service-0.11.0.jar libfb303-0.9.0.jar commons-logging-1.0.4.jar slf4j-api-1.6.1.jar
0.8.1 hadoop-core-0.20.205.jar hive-exec-0.8.1.jar hive-jdbc-0.8.1.jar hive-metastore-0.8.1.jar hive-service-0.8.1.jar libfb303-0.7.0.jar libthrift-0.7.0.jar log4j-1.2.15.jar slf4j-api-1.6.1.jar slf4j-log4j12-1.6.1.jar
0.7.1 hadoop-0.20-core.jar hive-exec-0.7.1.jar hive-jdbc-0.7.1.jar hive-metastore-0.7.1.jar hive-service-0.7.1.jar libfb303.jar commons-logging-1.0.4.jar slf4j-api-1.6.1.jar slf4j-log4j12-1.6.1.jar
0.7 hadoop-0.20-core.jar hive-exec-0.7.0.jar hive-jdbc-0.7.0.jar hive-metastore-0.7.0.jar hive-service-0.7.0.jar libfb303.jar commons-logging-1.0.4.jar slf4j-api-1.5.6.jar slf4j-log4j12-1.5.6.jar
0.5 hadoop-0.20-core.jar hive-exec-0.5.0.jar hive-jdbc-0.5.0.jar hive-metastore-0.5.0.jar hive-service-0.5.0.jar libfb303.jar log4j-1.2.15.jar commons-logging-1.0.4.jar
-
在 Please select one driver (請選擇一個驅動程式) 對話方塊中,根據以下表格選取驅動程式,然後按一下 OK (確認)。
Hive 版本 驅動程式類別名稱 0.13.1 com.amazon.hive.jdbc3.HS2Driver
0.11.0 org.apache.hadoop.hive.jdbc.HiveDriver.jar
0.8.1 org.apache.hadoop.hive.jdbc.HiveDriver.jar
0.7.1 org.apache.hadoop.hive.jdbc.HiveDriver.jar
0.7 org.apache.hadoop.hive.jdbc.HiveDriver.jar
0.5 org.apache.hadoop.hive.jdbc.HiveDriver.jar
-
-
當您返回 Select Connection Profile (選取連線設定檔) 對話方塊中,確認 Driver (驅動程式) 欄位設定為 Hive JDBC (Hive JDBC),並根據以下表格在 URL (URL) 欄位中提供 JDBC 連線字串。
Hive 版本 JDBC 連線字串 0.13.1 jdbc:hive2://localhost:10000/default
0.11.0 jdbc:hive://localhost:10004/default
0.8.1 jdbc:hive://localhost:10003/default
如果您的叢集使用 AMI 版本 3.3.1 或更高版本,在選取連線設定檔對話方塊的使用者名稱欄位中輸入
hadoop
。