私はhadoopハイブで実験を行っています。 この実験では、2つの異なるハードウェア設定で同じハイブジョブを実行します。これはAWS EMRでホストされています。AWS EMRでHadoopハイブスケーリングを行わない
laborder = 40 MB
labresult = 150 MB
labspecimen = 46 MB
このジョブは、約40秒で実行されます:私は、次のデータセットのサイズでこのスクリプトを実行
DROP DATABASE IF EXISTS labtest;
CREATE DATABASE labtest;
CREATE TABLE IF NOT EXISTS laborder (Insertts TIMESTAMP, ordernr STRING, Patientnr STRING, visitnr STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
"separatorChar" = ",",
"quoteChar" = "\""
) ;
LOAD DATA INPATH '${INPUT}/laborder.csv' OVERWRITE INTO TABLE laborder;
CREATE TABLE IF NOT EXISTS labanalyse (resultaat STRING, deleted BOOLEAN, analysecodePk INT, Inserttimestamp TIMESTAMP,
specimennr STRING, uitvoeringsts TIMESTAMP
) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
"separatorChar" = ",",
"quoteChar" = "\""
) ;
LOAD DATA INPATH '${INPUT}/labresult.csv' OVERWRITE INTO TABLE laborder;
CREATE TABLE IF NOT EXISTS labspecimen (specimennr STRING, ordernr STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
"separatorChar" = ",",
"quoteChar" = "\""
) ;
LOAD DATA INPATH '${INPUT}/labspecimen.csv' OVERWRITE INTO TABLE labspecimen;
CREATE TABLE IF NOT EXISTS labanalysecode (pk INT, analysecode STRING, analysecodeversion STRING, view INT, referencevalue STRING, unit STRING) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.OpenCSVSerde'
WITH SERDEPROPERTIES (
"separatorChar" = ",",
"quoteChar" = "\""
) ;
LOAD DATA INPATH '${INPUT}/labordercodes.csv' OVERWRITE INTO TABLE labanalysecode;
SELECT * FROM laborder
INNER JOIN labspecimen ON labspecimen.ordernr = laborder.ordernr
INNER JOIN labanalyse ON labanalyse.specimennr = labspecimen.specimennr
INNER JOIN labanalysecode ON labanalysecode.pk = labanalyse.analysecodepk;
: は、ここで私が実行hive.sqlスクリプトです。 私は、1つのマスターノードと2つのコアノードを持つセットアップでこれを実行することは、1つのマスター/ 4つのコアノードシステムで実行するよりも遅いと考えています。 ただし、違いはありません。私が間違っていることへの手がかりは?複数のマシンをよりうまく利用するために私は何ができますか?
ベンチマークを行うには非常に少量のデータです。データロケータリティのような遅い性質の多くの可能性があります。JVMの初期化など – Achyuth
hadoopブロックのサイズはおそらく128MBです。したがって、 'labresults'データで最大2つのパラレルマップタスクしか得られません。したがって、4つのコアが利用される –
データ量を1.5 GB x 400 MB x 460 MBに上げました。 – user213979