Arsip untuk Kategori ‘ Programming ’

[hadoop] tidak cocok untuk file kecil

Riset di daerah clustering, ternyata tidak mudah. Berbagai hal harus dipahami, terutama masalah memori. Beberapa hari yang lalu saya menemukan masalah pada hadoop ketika saya harus menyimpan jutaan files berkuran antara beberapa kilo bytes hingga 1 megabytes ke dalam HDFS. By default, Hadoop mengalokasi 64MB untuk setiap file. File dan Blok terkait menjadi sebuah objek, dimana objek tersebut menggunakan namespace. Celakanya kapasitas namespace ini sangat terbatas. Bisa dibayangkan jika file2 terkecil tersebut menghabiskan namespace hampir 100% padahal hanya memakai 20% dari hardisk.
Untuk itulah Hadoop menyediakan solusi dengan menggunakan HAR (Hadoop Archive). HAR ini mirip dengan TAR dan JAR. Fungsinya adalah mengumpulkan file-file menjadi satu file berekstensi .har.
Cara membuat HAR cukup mudah :

hadoop archive -archiveName namafilehar direktorisumber tempatfilehar

contoh :

hadoop archive -archiveName kumpulan.har /home/iin/data/* /home/iin/

Cara mengakses HAR dari program hadoop/cascading

hadoop jar filejava.jar namaClass fileHARname.har output

Info lebih lanjut bisa dibaca di blog developer yahoo

Mengubah Scheme Sumber File

Dengan mengubah sebuah scheme sumber file kita dapat mengoptimasi program map dan reduce pada hadoop. Sebagai contoh, jika kita mempunyai sekumpulan file dan ingin mengambil sebuah kontent file tidak beraturan isinya  secara langsung, maka kita harus buat sebuah sequence file yang berisi path dan isi file tersebut. Cara ini tentu saja membuat hardisk kita menjadi penuh. Untuk itu lebih baik kita langsung melakukkan parsing saat source tersebut sebelum proses map dilakukan. Kita dapat melakukan  pada method overriding source sbb :
import cascading.scheme.TextLine;
import cascading.tuple.Tuple;
import cascading.tuple.Fields;
public class INEXScheme extends TextLine {
    public INEXScheme (Fields newFieldsname)
    {
        super(newFieldsname);
    }

    public INEXScheme ()
    {
       super();
    }
     @Override
      public Tuple source(final Object key, final Object value) {
          Tuple tuple = new Tuple();
           if(value.toString().matches(“<title>.*</title>”))
               {
               String title = new String(value.toString().substring(7, value.toString().length()-8));
               tuple.add(title);
            return (tuple);
               }
            else
              return(null);
      }

}
Pada file utama(main) kita dapat memanggil scheme buatan kita dengan cara :
Tap XMLFiles= new Hfs( new INEXScheme(new Fields(“x”)), args[ 0 ] );
Cukup simple bukan ?

Instalasi Hadoop

Menggunakan facebook, google, yahoo mungkin hampir tiap hari kita
lakoni. tapi apakah kita tahu bagaimana sistem kerja mereka dalam
menangani jumlah data yang cukup besar. Untuk itulah mereka menggunakan membuat konsep map-reduce dalam pengelolan data mereka. Salah satu program yang menerapkan kosnep map-reduce itu adalah hadoop (dibaca hadup bukan handuk :lol: ). Bentuk logo hadoop sangat lucu, sebuah gajah. Mungkin karena yang ditangani data2 besar. halah kok jadi bahas logo, nggak penting banget. Ok, kita mulai instalasi hadoop ya ! Persyaratan supaya hadoop bisa berjalan dengan komputer, anda harus install java dulu.

  1. Download hadoop
  2. ekstrak hadoop tar xzf hadoop-0.20.2.tar.gz
  3. Export JAVA_HOME atau bisa langsung disetting di hadoop-env.sh yang terletak didirektori conf. Contoh : export JAVA_HOME=/usr/lib/jvm/java-6-openjdk/
  4. Setting core-site.xml, mapred-site.xml, atau anda bisa membiarkan saja sesuai dengan yang terinstall.
    core-site.xml
    <?xml version=”1.0″?>
    <?xml-stylesheet type=”text/xsl” href=”configuration.xsl”?>
    <configuration>
    <property>
    <name>hadoop.tmp.dir</name>
    <value>/tmp/dir/hadoop-${user.name}</value>
    <description>A base for other temporary directories.</description>
    </property><property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:58887</value>
    <description></description>
    </property>
    </configuration>
    mapred-site.xml
    <?xml version=”1.0″?>
    <?xml-stylesheet type=”text/xsl” href=”configuration.xsl”?>
    <configuration>
    <property>
    <name>mapred.job.tracker</name>
    <value>localhost:58888</value>
    <description>
    </description>
    </property>
    </configuration>
  5. Sekarang coba test apakah Hadoop udah bisa jalan
    #bin/start-all.sh
  6. Berikut adalah perintah dalam hadoop yang hampir sama dengan perintah command line di Linux
    • bin/hadoop dfs -copyFromLocal direktorilocal direktorihdfs
    • bin/hadoop dfs -ls direktori
    • bin/hadoop dfs -rm
  7. testing sebuah contoh di hadoop
    bin/hadoop jar hadoop-0.20.0-examples.jar wordcount inputfile outputfile

Maven, love you so much :P

mInstal Maven

nurrak@nbtplan002:~$ apt-get maven2

Cek instalasi Maven

nurrak@nbtplan002:~$ mvn -v

Apache Maven 2.2.1 (r801777; 2009-08-06 20:16:01+0100)
Java version: 1.6.0_20
Java home: /usr/lib/jvm/java-6-sun-1.6.0.20/jre
Default locale: en_IE, platform encoding: UTF-8
OS name: “linux” version: “2.6.32-24-generic” arch: “i386″ Family: “unix”
Cek direktori ~./m2 ada ~/.m2/settings.xml dan ~/.m2/repository/
Import Certificate

sudo keytool -import -trustcacerts -alias dev.sindice.net -keystore $JAVA_HOME/lib/security/cacerts -storepass changeit -noprompt -file certificate.txt

jika dapat error berikut
keytool error: java.io.FileNotFoundException: /usr/lib/jvm/java-6-sun/lib/security/cacerts (No such file or
directory)
ganti menjadi :

nurrak@nbtplan002:~/KeyForPhD/code/inex-mapping$ sudo keytool -import -trustcacerts -alias dev.sindice.net -keystore $JAVA_HOME/jre/lib/security/cacerts -storepass changeit -noprompt -file certificate.txt

Certificate was added to keystore Read more

satu tahun jadi mahasiwa

Sudah hampir setahun saya terdampar di Galway, sebuah kota yang pretty silent (cocok buat riset), but really green enviroment. Indah banget. Banyak semak-semak dan halaman luas dengan rumput hijaunya, bunga dan burung yang berterbangan.
Berbagai impian untuk mewujudkan keinginan riset terbenam di otak. Apalagi ketemu teman-teman yang sudah evangelist di bidangnya. Kadang saya merasa minder, ora iso opo-opo jee. Hampir semua sudah punya produk (kebanyakan OSS) yang telah dibagi ke masyarakat dunia. Pertama masuk sudah ada tulisan daftar orang-orang IT di bawah 30 tahun yang telah mengubah dunia. Usiaku sekarang udah 28 tahun, belum membuat sesuatu yang bisa mengubah Indonesia, Islam apalagi dunia.
Beberapa waktu lau beberapa teman satu tim mendapatkan hadiah 250.000 EUR dalam semantic web track. Mereka semua adalah tim yang luar biasa. Kerjasama dan saling memberi, sangat kompak ! Sebagian besar publikasi dilakukan bersama-sama baik di jurnal, proceding dll. Tidak heran banyak sekali daftar publikasi setiap anggota.
Hari ini saya sedikit mengeluh ke teman saya dengan banyaknya rumus yang harus saya pelajari dari paper :( Frankly, I am hate math and statistic. Dulu awalnya saya ditempatkan di area riset facet browser, tapi sekarang pindah ke area search engine yang membutuhkan proses perangkingan sehingga banyak matematika dan statistiknya :(   He said :

if I were able to understand them, you can do it also, there is no magic.

To be honest, I am really excited to learn MapReduce concept. Makanan apa tuh ? Kalau ada yang pernah belajar cloud computing-nya google pasti tahu. Konsep ini dipatenkankan Google untuk mendukung distributed computing. Asyik banget ….
Yeah semua harus dipelajari, Insya Allah akan terbiasa memahaminya ;) keep cheering up and prove it V-_-V

Ikuti

Get every new post delivered to your Inbox.

Bergabunglah dengan 3.135 pengikut lainnya.