2019년 10월 30일 수요일

H2O Driverless AI에서 HDFS로부터 dataset을 import 하기


H2O DAI에서 HDFS에 있는 파일을 직접 가져와야 하는 경우가 있습니다.  대부분의 경우 hadoop cluster의 data node들은 x86 아키텍처인 경우가 많은데, ppc64le 아키텍처인 IBM AC922 서버에서도 hadoop binary를 풀어놓기만 하면 쉽게 x86 아키텍처의  hadoop cluster에서 data를 끌어올 수 있습니다.  굳이 HDFS 속에 든 data file을 AC922 서버의 local filesystem(즉 POSIX filesystem)으로 copy해서 가져올 필요없이, H2O DAI의 web interface에서 직접 import 해올 수 있습니다.

이를 테스트해보기 위해 일단 다음과 같이 ppc64le 서버에 hadoop binary를 설치합니다.  여기서는 전에 올렸던 포스팅(http://hwengineer.blogspot.com/2019/01/ppc64le-redhat-x86-hadoop-cluster-hive.html)에서 빌드했던 ppc64le용 hadoop 2.6.5 binary를 사용하겠습니다.

[user654@p654-kvm1 ~]$ tar -xvf hadoop-2.6.5.tar.gz

[user654@p654-kvm1 ~]$ cd hadoop-2.6.5/etc/hadoop

다음과 같이 core-site.xml와 mapred-site.xml 등 일부 config 파일을 간단히 수정하여 이 서버를 hadoop name node이자 data node로 구성하겠습니다.

[user654@p654-kvm1 hadoop]$ vi mapred-site.xml
<configuration>
<property>
  <name>mapred.job.tracker</name>
  <value>localhost:9001</value>
 </property>

 <property>
  <name>mapred.local.dir</name>
  <value>${hadoop.tmp.dir}/mapred/local</value>
 </property>

 <property>
  <name>mapred.system.dir</name>
  <value>${hadoop.tmp.dir}/mapred/system</value>
 </property>
</configuration>

[user654@p654-kvm1 hadoop]$ vi core-site.xml
<configuration>
 <property>
  <name>fs.default.name</name>
  <value>hdfs://localhost:9000</value>
 </property>

 <property>
  <name>hadoop.tmp.dir</name>
  <value>/home/user654/hadoop-2.6.5/hadoop-${user.name}</value>
 </property>
</configuration>

[user654@p654-kvm1 hadoop]$ vi slaves
localhost

[user654@p654-kvm1 hadoop]$ cd ../..

이제 HDFS를 format 합니다.

[user654@p654-kvm1 hadoop-2.6.5]$ hadoop namenode -format

이어서 hadoop cluster를 시작합니다.

[user654@p654-kvm1 hadoop-2.6.5]$ . sbin/start-all.sh

OS user name인 user654의 home directory를 HDFS 내에 만듭니다.

[user654@p654-kvm1 ~]$ hadoop fs -mkdir -p /user/user654

이제 HDFS 내에 input이라는 directory를 만들고 거기에 OS의 filesystem에 들어있는 BlackFriday_train.xls 라는 file을 HDFS에 넣어줍니다.

[user654@p654-kvm1 ~]$ hadoop fs -mkdir input

[user654@p654-kvm1 ~]$ hadoop fs -put ./BlackFriday_train.xls input

다음과 같이 잘 들어간 것을 확인합니다.

[user654@p654-kvm1 ~]$ hadoop fs -ls -R
drwxr-xr-x   - user654 supergroup          0 2019-10-30 02:10 input
-rw-r--r--   3 user654 supergroup   10181120 2019-10-30 02:10 input/BlackFriday_train.xls


이제 H2O DAI의 구성 파일인 config.toml을 수정합니다.   고쳐야 할 부분은 core_site_xml_path과 hdfs_config_path에 hadoop config file들의 PATH를 명기하는 것 뿐입니다.

[user654@p654-kvm1 dai-1.8.0-linux-ppc64le]$ vi config.toml
...
core_site_xml_path = "/home/user654/hadoop-2.6.5/etc/hadoop"
...
hdfs_config_path = "/home/user654/hadoop-2.6.5/etc/hadoop"
...

이제 H2O DAI를 restart 합니다.

[user654@p654-kvm1 dai-1.8.0-linux-ppc64le]$ ./kill-dai.sh

[user654@p654-kvm1 dai-1.8.0-linux-ppc64le]$ ./run-dai.sh


그런 뒤에 Add Dataset 메뉴에 가서 HDFS를 선택합니다.   들어가보면 "Explore Hadoop File System"이라는 메뉴가 나옵니다.  이때 이 메뉴 제목 바로 아래의 hdfs:// 뒤에 다음과 같이 어느 hadoop node에 접근해야 하는지 이름은 손으로 타이핑해서 적어줘야 합니다.  여기서는 localhost:9000/ 까지 손으로 적어줍니다.  이후에는 directory 이름을 click 하여 원하는 파일을 HDFS에서 찾아낼 수 있습니다.

hdfs://localhost:9000/




다음과 같이 잘 import 되는 것을 보실 수 있습니다.


댓글 없음:

댓글 쓰기