Fork me on GitHub

Hadoop Hiveをwindows上で実行する(0.5.0)

  • Oct 28, 2010

categoryプラグインは存在しません。

Windows上で、Hiveを動かす方法のメモ。

環境

手順

Hadoopのインストール、起動

まずはHadoopをインストールして、HDFS, MapReduce共に起動します。

今のところ、Hadoop 0.21系には対応していないので注意が必要です。

Hiveの展開

Hiveはソース付きのdevパッケージをダウンロードして、任意の場所に展開します。

パッチを当てる

Hive

src/ql/src/java/org/apache/hadoop/hive/ql/exec/Utilities.java

を編集して、getMapRedWorkメソッドを以下のように修正します。

 public static mapredWork getMapRedWork (Configuration job) \{
   mapredWork gWork = null;
   try \{
     synchronized(gWorkMap) \{
       gWork = gWorkMap.get(getJobName(job));
     \}
     if(gWork == null) \{
       synchronized (Utilities.class) \{
         if(gWork != null)
           return (gWork);
	  Path planPath = new Path(HiveConf.getVar(job, HiveConf.ConfVars.PLAN));
	  FileSystem fs = planPath.getFileSystem(job);
	  InputStream in = fs.open(planPath);
//          InputStream in = new FileInputStream("HIVE_PLAN"
//            +sanitizedJobId(job));
         mapredWork ret = deserializeMapRedWork(in, job);
         gWork = ret;
         gWork.initialize();
         gWorkMap.put(getJobName(job), gWork);
       \}
     \}
     return (gWork);
   \} catch (Exception e) \{
     e.printStackTrace();
     throw new RuntimeException (e);
   \}
 \}

要は、キャッシュへのシンボリックリンクを当てにせず、通常の方法でクエリプランを読み込むように修正します。

antを実行

srcフォルダ内で

ant package

を実行して、修正したソースからjarを作成します。Proxyがある場合は、build.xmlを修正してProxyを設定します。

jarをコピー

src/build/dist/lib内にjarファイルができるので、

cp src/build/dist/lib/* lib/

というように、lib内にコピーします。

Hiveを利用

あとは、以下のようにHiveを起動すれば利用出来るようになります。

HADOOP_HOME=c:\somewhere\hadoop-0.20.2 bash bin/hive

HADOOP_HOMEは環境変数に指定しておくと、毎回指定する必要はなくなります。

commentプラグインは存在しません。