Installation Hadoop+Hive dan Porting data dari Postgresql ke Hive

Judulnya aneh?

hmm,ngga sih,tergantung kebutuhan aja gan :P..okeh,saya akan sedkit berbagi mengenai kelanjutan tugas saya dikantor,jadi melanjutkan permasalahan yang diberikan pada manager saya,so akhirnya mulai-mulai deh install Hadoop dkk..

okeh,pertama-tama instlall hadoop dulu,download hadoop di sini untuk yang versi asli apache,dan di sini (include sqoop,dan hive-nya)untuk yang bundelan dari cloudera..saya pakai yang cloudera karena sqoop membutuhkan library hadoop yang sudah ditambah oleh cloudera..:D..

selanjutnya untar folder hadoop dan kawan-kawan,jangan lupa set Hadoop home,

 export HADOOP_HOME=/opt/hadoop-0.20.2-cdh3u0
 export PATH=$PATH:$HADOOP_HOME/bin
 export HIVE_HOME=/opt/hive-0.7.0-cdh3u0
 export PATH=$PATH:$HIVE_HOME/bin
 export SQOOP_HOME=/opt/sqoop-1.2.0
 export PATH=$PATH:$SQOOP_HOME/bin
 

kalo saya kira-kira path-nya seperti itu untuk hadoop,sqoop,dan Hivenya..

okeh,selanjutnya vim atau gedit file configure-sqoop yang ada pada direktori bin/ dari SQOOP_HOME..

pertanyaannya untuk apa?

sebenarnya hal ini dibutuhkan hanya jika bagi anda yang melakukan instalasi hadoop+hive+sqoop saja,karena pada dasarnya sqoop secara default harus terinclude ZOOKEEPER,HBASE

<pre>#!/bin/bash
#
# Licensed to Cloudera, Inc. under one or more
# contributor license agreements.  See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# Cloudera, Inc. licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License.  You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

# This is sourced in by bin/sqoop to set environment variables prior to
# invoking Hadoop.

bin="$1"

if [ -z "${bin}" ]; then
  bin=`dirname $0`
  bin=`cd ${bin} && pwd`
fi

if [ -z "$SQOOP_HOME" ]; then
  export SQOOP_HOME=${bin}/..
fi

# Find paths to our dependency systems. If they are unset, use CDH defaults.

if [ -z "${HADOOP_HOME}" ]; then
  HADOOP_HOME=/usr/lib/hadoop
fi
#if [ -z "${HBASE_HOME}" ]; then
#  HBASE_HOME=/usr/lib/hbase
#fi
#if [ -z "${ZOOKEEPER_HOME}" ]; then
#  ZOOKEEPER_HOME=/usr/lib/zookeeper
#fi

# Check: If we can't find our dependencies, give up here.
if [ ! -d "${HADOOP_HOME}" ]; then
  echo "Error: $HADOOP_HOME does not exist!"
  echo 'Please set $HADOOP_HOME to the root of your Hadoop installation.'
  exit 1
fi
#if [ ! -d "${HBASE_HOME}" ]; then
#  echo "Error: $HBASE_HOME does not exist!"
#  echo 'Please set $HBASE_HOME to the root of your HBase installation.'
#  exit 1
#fi
#if [ ! -d "${ZOOKEEPER_HOME}" ]; then
#  echo "Error: $ZOOKEEPER_HOME does not exist!"
#  echo 'Please set $ZOOKEEPER_HOME to the root of your ZooKeeper installation.'
#  exit 1
#fi

# Where to find the main Sqoop jar
SQOOP_JAR_DIR=$SQOOP_HOME

# If there's a "build" subdir, override with this, so we use
# the newly-compiled copy.
if [ -d "$SQOOP_JAR_DIR/build" ]; then
  SQOOP_JAR_DIR="${SQOOP_JAR_DIR}/build"
fi

function add_to_classpath() {
  dir=$1
  for f in $dir/*.jar; do
    SQOOP_CLASSPATH=${SQOOP_CLASSPATH}:$f;
  done

  export SQOOP_CLASSPATH
}

# Add sqoop dependencies to classpath.
SQOOP_CLASSPATH=""
if [ -d "$SQOOP_HOME/lib" ]; then
  add_to_classpath $SQOOP_HOME/lib
fi

# Add HBase to dependency list
#add_to_classpath $HBASE_HOME
#add_to_classpath $HBASE_HOME/lib

#HBASE_CONF_DIR=${HBASE_CONF_DIR:-${HBASE_HOME}/conf}
SQOOP_CLASSPATH=${HBASE_CONF_DIR}:${SQOOP_CLASSPATH}

#add_to_classpath $ZOOKEEPER_HOME
#add_to_classpath $ZOOKEEPER_HOME/lib

SQOOP_CONF_DIR=${SQOOP_CONF_DIR:-${SQOOP_HOME}/conf}
SQOOP_CLASSPATH=${SQOOP_CONF_DIR}:${SQOOP_CLASSPATH}

# If there's a build subdir, use Ivy-retrieved dependencies too.
if [ -d "$SQOOP_HOME/build/ivy/lib/sqoop" ]; then
  for f in $SQOOP_HOME/build/ivy/lib/sqoop/*/*.jar; do
    SQOOP_CLASSPATH=${SQOOP_CLASSPATH}:$f;
  done
fi

add_to_classpath ${SQOOP_JAR_DIR}

export SQOOP_CLASSPATH
export SQOOP_CONF_DIR
export SQOOP_JAR_DIR
export HADOOP_CLASSPATH="${SQOOP_CLASSPATH}:${HADOOP_CLASSPATH}"
export HADOOP_HOME
#export HBASE_HOME</pre>

uncomment sesuai yang saya kasih tanda #,selanjutnyaaaa,save dan kita sudahi hack kita dengan mengeksekusi sqoop(sql to hadoop)..

eits,perlu diingat,ketika kita akan mengeksekusi sqoop,jangan lupa tambahkan library jdbc sesuai database yang kita pakai,misalkan:


sqoop import-all-tables --connect jdbc:postgresql://localhost/TestDB --username postgres --password postgres --hive-import

artinya kita ingin agar data dari database lama kita,kita pindahkan ke sqoop..

jika anda menggunakan ubuntu dan gagal pada saat pertama kali,Tenang,mungkin kegagalan anda disebabkan oleh masalah privilege,anda bisa menjdai super user untuk kembali mengeksekusi sqoop..:D..

BTW jangan lupa buat foldernya dulu yah,baru dieksekusi commandnya di folder tersebut,folder ini sebagai HDFS..

oke,tinggal jalankan hive pada console dan lakukan query layaknya sql..

dan hasilnya?

:D

semoga manfaat

Categories: Software Dev

Hadoop and Hive : Porting dari Postgresql ke Hive Menggunakan sqoop

pertanyaan setelah membaca judul post diatas ialah,mengapa hal ini diperlukan? hmmm..jawabannya relatif terhadap kebutuhan,contohnya jika kita ingin menggunakan hadoop ketimbang postgresql sebagai database akibat masalah performance..

sebelumnya apa sih hadoop?

simplenya hadoop ialah farmework opensource untuk keperluan map reduce,nah pertanyaan lagi,apa itu map reduce? cari aja di google :P

dikantor kebetulan sedang menghadapi masalah performance akibat aplikasi yang seharusnya realtime namun cara pengambilan querynya layaknya dongen a.k.a data mining..so,cara ngakalinnya gimana?

saya mengusulkan untuk mengganti database postgresql,nah pilihannya,

1. pake Database NoSQL yang menjamin Integrity and Reliabilty (setau gw sih HBASE kalo ga salah)

2. pake hadoop

entah kenapa yang dipilih justru hadoop,mungkin karena bebrapa alasan yang gw ga ngerti(maklum dalam hal pengalaman ane minim bgd)..

so,mulailah cari-cari cara untuk mengatasi permasalahan ini..

ok,kendala yang pertama kali ditemukan ialah..

1. bagaimana cara memindahkan arsitektur yang sudah eksis kedalam hdfs,lebih tepatnya data?

2. how to query the data?

3. apakah butuh waktu lama untuk diimplementasi?

hadoop jika kita mengimpementasi pure,untuk query sendiri sangatlah rumit,so ada interface untuk hadoop dengan query layaknya SQL,ialah hive yang dapat melakukan hal itu..

selanjutnya,bagaimana cara kita porting data yang sudah ada?apakah itu mungkin?

jawbannya mungkin,thank to sqoop,proses ini tidak lagi mejadi sulit..

oke,oke,sekarang masalahnya how to?

hmm,next post akan dijelaskan penginstalan sampai kita bias query data ke hive..:D

Categories: Uncategorized

Cassandra

Cassandra
Berikut ini merupakan sedikit hasil yang sudah diteliti (oleh saya dan dikutip dari beberapa artikel) tentang cassandra, pertama saya akan menjelaskan tentang model data dari cassandra itu sendiri, karena data model dari cassandra itu sendiri sangat berbeda bagi orang yang mempunyai latar belakang RDBMS. Berikut penjelasannya.
Column
Pertama kita akan membahas bagian terendah dari increment data itu sendiri, misalkan dalam bentuk sederhana, column itu merupakan:
{
name: “emailAddress”,
value: “arin@example.com”,
timestamp: 123456789
}
Jadi berisi standar nama data dan value dari data tersebut. Timestamp bisa masuk atu tidak. Isi data bisa string atu sebenarnya bertipe byte[].
SuperColumn
Selanjutnya ialah supercolumn,ialah nama data dan value yang berisi map (collection) dari column yang tidak terbatas, kuncinya menggunakan nama column. Misal:
{ // ini superColumn
name: “homeAddress”,
// dengan jumlah deretan tak terbatas dari column
value: {
// perhatikan bahwa key ialah nama dari column
street: {name: “street”, value: “1234 x street”, timestamp: 123456789},
city: {name: “city”, value: “san francisco”, timestamp: 123456789},
zip: {name: “zip”, value: “94107″, timestamp: 123456789},
}
}

Jadi perbedaan terbesar antara column dan super column ialah bahwa column berisi string data dengan tambahan timpestamp sedangkan supercolumn berisi map (collection) dari column dan tidak mempunyai timestamp.

Sederhananya:
homeAddress://merupakan supercolumn {
street: “1234 x street”,//column
city: “san francisco”,
zip: “94107″,
}

Selanjutnya, kita akan membahas struktur untuk menggroupkan supercolumn dan column, yaitu ColumnFamily, dan terdapat dua jenis, yaitu standard dan super.

ColumnFamily
ColumnFamily ialah struktur yang berisi jumlah row tak terbatas, setiap row mempunyai key yang user berikan dan berisi map (collection). Key dalam map adalah nama dari column dan valuesnya adalah column dari diri mereka sendiri.
UserProfile = { // ini adalah ColumnFamily
phatduckk: { //ini adalah key untuk row ini dalam ColumnFamily
//sekarang kita punya jumlah tak terbatas dari column dlam baris ini
username: “phatduckk”,
email: “phatduckk@example.com”,
phone: “(900) 976-6666″
}, // end row
ieure: { //ini adalah key lain untuk row ini dalam ColumnFamily
//sekarang kita punya jumlah tak terbatas dari column dlam baris ini
username: “ieure”,
email: “ieure@example.com”,
phone: “(888) 555-1212″
age: “66″,
gender: “undecided”
},
}

Dalam pemrograman java, jenis seperti ini akan sama dengan hashMap/dictionary.
Cassandra mempunyai konsep schemaless, terlihat pada contoh pada key phatduckk,column ialah username,email,phone, sedangkan pada ieure username,email,phone,age,gender, berbeda bukan? Hal ini disebabkan dalam cassandra tidak memaksakan dalam suatu key harus sesuai schema yang ada, sifat ini membuat cassandra sangat flexible.

ColumnFamily dengan tipe super
Telah dijelaskan sebelumnya bahwa column family dapat bertipe standard maupun super. Contoh diatas merupakan ColumnFamily dengan type standard. Disebut standard karena setiap row berisi map dari normal column, bukan supercolumns.
Saat ColumnFamily bertipe super, maka setiap row akan berisi supercolumns, alias valuenya berisi map of collection. Dalam ColumnFamily ini tidak ada columnfamily bertipe standard. Contohnya:
AddressBook = { // ColumnFamily dengan tipe super
phatduckk: { // ini adalah key untuk row pada Super CF
//key disini ialah nama dari pemilik dari addressbook
//sekarang kita mempunyai jumlah tak terbatas dari supercolumn pada //baris ini
//key dalam row adalah nama untuk superColumns
//setiap dari supercolumns ialah address book entry
friend1: {street: “8th street”, zip: “90210″, city: “Beverley Hills”, state: “CA”},

//ini adalah adderss book entry untuk John dalam phatduckks address //book
John: {street: “Howard street”, zip: “94404″, city: “FC”, state: “CA”},
Kim: {street: “X street”, zip: “87876″, city: “Balls”, state: “VA”},
Tod: {street: “Jerry street”, zip: “54556″, city: “Cartoon”, state: “CO”},
Bob: {street: “Q Blvd”, zip: “24252″, city: “Nowhere”, state: “MN”},

}, // end row
ieure: { // this is the key to another row in the Super CF
// all the address book entries for ieure
joey: {street: “A ave”, zip: “55485″, city: “Hell”, state: “NV”},
William: {street: “Armpit Dr”, zip: “93301″, city: “Bakersfield”, state: “CA”},
},
}

KeySpace
Keyspace ialah pengelompokan terluar dari data kita, semua columnFamily ada dalam keyspace. Keyspace bisa mempunyai banyak ColumnFamily tapi tidak berarti kita bisa amennetukan relasi diantaranya, sebagai contoh, ColumnFamily tidak seperti tabel dalam mysql, kita tidak bisa menjoinkannya, lalu, karena columnFamily_1 punya row dengan key “phatduck” itu tidak berarti columnFamily_2 punya satu juga.
Sorting
Cassandra itu tidak queryable seperti SQL, kita tidak menspesifikasikan bagaimana kita ingin data itu tersorting saat kita melakukan fetcing. Data akan di sort secepat kita menaruh data kedalam cluster dan akan selalu tersorting. Ini adalah performa dahsyat untuk mempercepat saat read tapi sebagai gantinya kita harus memastikan untuk merencanakan data model kita dalam suatu cara agar bisa memenuhi pola akses kita. Ajdi penentuan ini tidaklah boleh main – main.
Column selalu tersortir dalam rownya sesuai nama columnnya. Jadi column itu selalu tersortir sesuai dengan namanya. Bagaimana nama tersebut dibandingkan bergantung dari ColumnFamilys CompareWith option. Secara kasat, kita mempunyai beberapa pilihan antara lain BytesType, UTF8Type, LexicalUUIDType, TimeUUIDType, AsciiType, dan LongType. Setiap pilihan perlakuannya beda terhadap Column name. sebagai contoh,menggunakan Longtype akan memperlakukan columns name sebagai 64 bit Long.

ColumnFamilys

SuperColumnFamilys

Tipe Query yang dimiliki cassandra
1.Single Column
2.Slice
a.Set dari nama/set dari range
b.Simple Slice -> column
c.Super Slice -> super column
3.Key Range
Tiap Query merupakan penggunaan api yang disediakan oleh thrift, jadi untuk lebih jelas bisa membuka Cassandra API.

Modifikasi
1.Insert/update
2.Remove
3.Satu Column atau Batch
4.Spesifikasikan W(wait), jumlah node untuk ditunggu

Arsitektur Cassandra
Pertama yang pasti orang tanyakan ialah, mengapa Cassandra?
Mysql membuat terlalu banyak random I/O
Solusi berbasis File membutuhkan terlalu banyak Lock
Sedangkan Cassandra menwarkan bentuk baru dari data itu sendiri yaitu:
Scale Out, bukan Scale Up
Online Load Balancing/Cluster Growth
Skema Flexible(schemaless)
Key Oriented Queri
CAP-Aware

Teorema CAP
Teorema CAP (Brewer) menyatakan bahwa kita bisa mengambil dua dari Consistency, Availability,Partition tolerance. Kita tidak bisa mempunyai ketiganya disaat yang sama. Cassandra mengambil Availability dan Partitioning tolerance (AP). Dalam cassandra, kita bisa mendapat Consistency kuat (dengan penambahan latency), tapi kita tidak dapat melakukan locking terhadap row.
Kelebihan Cassandra
High Availability
Incremental Scalability
Eventually Consistency
Tunable tradeoffs between consistency and latency
Minimal Administration
No SPF(Single Point of Failure)

Cassandra vs MySQL with 50GB of data
MySQL
Cassandra
~300ms write
~0.12ms write
~350ms read
~15ms read

Credit to :

http://arin.me/blog/?s=wtf

Cassandra Wiki

Categories: Uncategorized

Distribute Cache With Ehcache and Terracotta

pada pembahasan sebelumnya, kita membahas bagaimana melakukan caching dengan mengistegrasikan Terracotta dengan Ehcache. Saat riset lalu, saya mendapat kesulitan tentang terracotta integration module, karena harus menggunakan tim-get.sh untuk melakukan install online. Namun karena keterbatasan atas fasilitas internet, akan sangat menjadi sulit, dan setelah bertanya pada forum, didapatkan hasil, bisa cek di http://forums.terracotta.org/forums/posts/list/3667.page#20160.

So, sekarang kita bisa langsung menggunakan tim-<module>.jar sesuai keinginan kita dengan mendownload secara manual lewat:

http://www.terracotta.org/download/reflector/maven2/org/terracotta/modules/<nama module>/<versi>/<nama module-versi>.jar

karena ini merupakan cara yang tidak wajar maka memiliki kelemahan, yaitu pada install folder terracotta, kita harus membuat folder dengan nama <module> dan didalam folder tersebut buat kembali folder dengan nama <version>, baru letakkan tim-<module>.jar kedalam folder tersebut.

Setelah masalah satu selesai, maka akan muncul masalah selanjutnya, yaitu bagaimana gara module tersebut bisa terbaca oleh terracotta pada tc-config.xml? Maka kita harus menambahkan <repository>{path menuju module.jar}</repository> diatas nama module karena jika menggunakan eclipse module repository justru ke eclipse installation folder. Jadi repository harus ada.

Untuk selanjutnya, contohnya ialah sebagai berikut:

<modules>

<repository>/usr/local/terracotta/terracotta-3.2.0/modules/org/terracotta/modules/tim-concurrent-collections/1.3.0</repository>

<module name=“tim-concurrent-collections” version=“1.3.0″ />

<repository>/usr/local/terracotta/terracotta-3.2.0/modules/org/terracotta/modules/tim-distributed-cache/1.3.0</repository>

<module name=“tim-distributed-cache” version=“1.3.0″ />

<repository>/usr/local/terracotta/terracotta-3.2.0/modules/org/terracotta/modules/tim-ehcache-1.7/1.5.0</repository>

<module name=“tim-ehcache-1.7″ version=“1.5.0″ />

</modules>

jadi susunan cara penamaan harus mengikuti aturan seperti diatas. Terdapat banyak module dikarenakan module satu membutuhkan dependensi terhadap module lainnya. Perlu diingat juga, jika menggunakan terracotta 3.2.0, maka ehcache yang compatible ialah sekitar Ehcache-1.7, dan tim-ehcache -nya juga harus compatible, terracotta sangat sensitif terhadap hal ini. Jadi akan kita bahas setelah masuk kebadan program.

Seperti biasa, buat kelas seperti dibawah ini:

package org.terracotta.sample;

import net.sf.ehcache.Cache;

import net.sf.ehcache.CacheManager;

import net.sf.ehcache.Element;

public class UserEhcacheExample {

private CacheManager manager = new CacheManager();

public String findUser(Integer id) {

String user = cacheGet(id);

if (user == null) {

user = fetch(id);

cachePut(id, user);

System.out.println(“\t- MISS”);

} else {

System.out.println(“\t- HIT”);

}

return user;

}

private String cacheGet(Integer id) {

Cache userCache = manager.getCache(“sampleTerracottaCache”);

Element element = userCache.get(id);

if (element != null) {

return (String) element.getObjectValue();

} else {

return null;

}

}

private void cachePut(Integer id, String user) {

Cache userCache = manager.getCache(“sampleTerracottaCache”);

userCache.put(new Element(id, fetch(id)));

}

private String fetch(Integer id) {

switch (id.intValue()) {

case 0: return “Ari Zilka”;

case 1: return “Alex Miller”;

case 2: return “Geert Bevin”;

case 3: return “Taylor Gautier”;

case 4: return “Jonas Boner”;

default:

throw new RuntimeException(“Unknown id: “ + id.intValue());

}

}

public static void main(String arg[]) throws InterruptedException {

UserEhcacheExample userCache = new UserEhcacheExample();

for (int i = 0; i < 10; i++) {

helpFind(i % 5, userCache);

}

}

public static void helpFind(int id, UserEhcacheExample userCache) {

System.out.print(“Find “ + id);

userCache.findUser(id);

}

}

pada method cacheGet(), terlihat kita mengambil definisi cache dengan nama sampleTerracottaCache, yang sudah didefinisikan pada ehcache.xml, yaitu definisi cache dan tempat yang dipesan pada memorui dimana kita menyimpan cache.

Integrasi antara Ehcache dan Terracotta pada komputer rumah saya memiliki keanehan, yaitu jika menggunakan eclipse, dalam melakukan running terhadap aplikasi DSO kita, kita tidak bisa langsung melakukan “run as Terracotta DSO application”, maka akan terjadi error seperti dibawah ini:

2010-05-28 20:21:51,902 INFO – Terracotta 3.2.0, as of 20100107-140117 (Revision 14244 by cruise@su10mo5 from 3.2)

2010-05-28 20:21:52,928 INFO – Configuration loaded from the file at ‘/home/kuuga/Ehcache/DistributeCachingTuts/tc-config.xml’.

2010-05-28 20:21:53,403 INFO – Log file: ‘/home/kuuga/Ehcache/DistributeCachingTuts/terracotta/client-logs/terracotta-client.log’.

2010-05-28 20:21:57,200 INFO – Connection successfully established to server at 127.0.1.1:9510

Exception in thread “main” net.sf.ehcache.CacheException: Unable to load class net.sf.ehcache.terracotta.StandaloneTerracottaStoreFactory. Initial cause was The Terracotta dso-boot.jar is specified via -Xbootclasspath. This is not a correct configuration, please remove it

at net.sf.ehcache.util.ClassLoaderUtil.createNewInstance(ClassLoaderUtil.java:109)

at net.sf.ehcache.TerracottaStoreHelper.newStoreFactory(TerracottaStoreHelper.java:101)

at net.sf.ehcache.CacheManager.init(CacheManager.java:284)

at net.sf.ehcache.CacheManager.<init>(CacheManager.java:260)

at org.terracotta.sample.UserEhcacheExample.<init>(UserEhcacheExample.java:6)

at org.terracotta.sample.UserEhcacheExample.main(UserEhcacheExample.java:43)

Caused by: net.sf.ehcache.CacheException: The Terracotta dso-boot.jar is specified via -Xbootclasspath. This is not a correct configuration, please remove it

at net.sf.ehcache.terracotta.StandaloneTerracottaStoreFactory.testForBootJar(StandaloneTerracottaStoreFactory.java:219)

at net.sf.ehcache.terracotta.StandaloneTerracottaStoreFactory.<init>(StandaloneTerracottaStoreFactory.java:47)

at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)

at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)

at java.lang.reflect.Constructor.newInstance(Constructor.java:513)

at net.sf.ehcache.util.ClassLoaderUtil.createNewInstance(ClassLoaderUtil.java:92)

… 5 more

error masih sama seperti minggu kemarin, namun setelah melakukan beberapa percobaan konfigurasi, ditemukan bahwa hal ini karena saat kita melakukan running dengan mode diatas, dso-boot-hotspot_linux_160_17.jar terdapat kekliruan dalam build, secara otomatis akan terus terjadi seperti ini dan saya masih belum bisa cara mengatasinya, namun dalam dokumentasi ehcache, kita bisa menambahkan konfigurasi Terracotta seperti pada tc-config.xml pada ehcache.xml, tentu saja hal ini bisa karena kita telah memiliki module tim-<module>.jar, dan konfigurasi ehcache dan terracotta akan seperti dibwah ini:

<?xml version=“1.0″ encoding=“UTF-8″?>

<ehcache xmlns:xsi=http://www.w3.org/2001/XMLSchema-instance&#8221;

xsi:noNamespaceSchemaLocation=“ehcache.xsd”

updateCheck=“true” monitoring=“autodetect”>

<diskStore path=“java.io.tmpdir”/>

<cacheManagerEventListenerFactory class=“” properties=“”/>

<terracottaConfig>

<tc-config>

<servers>

<server host=“%i” name=“localhost”>

<dso-port>9510</dso-port>

<jmx-port>9520</jmx-port>

<data>terracotta/server-data</data>

<logs>terracotta/server-logs</logs>

<statistics>terracotta/cluster-statistics</statistics>

</server>

<update-check>

<enabled>true</enabled>

</update-check>

</servers>

<system>

<configuration-model>development</configuration-model>

</system>

<clients>

<modules>

<repository>/usr/local/terracotta/terracotta-3.2.0/modules/org/terracotta/modules/tim-concurrent-collections/1.3.0</repository>

<module name=“tim-concurrent-collections” version=“1.3.0″ />

<repository>/usr/local/terracotta/terracotta-3.2.0/modules/org/terracotta/modules/tim-distributed-cache/1.3.0</repository>

<module name=“tim-distributed-cache” version=“1.3.0″ />

<repository>/usr/local/terracotta/terracotta-3.2.0/modules/org/terracotta/modules/tim-ehcache-1.7/1.5.0</repository>

<module name=“tim-ehcache-1.7″ version=“1.5.0″ />

</modules>

seperti contoh diatas, nama module harus sesuai, dan harus diperhatikan repository sesuai dengan path dari module untuk menghindari kesalahan. Karena menggunakan Terracotta 3.2.0, maka ehcache yang mendukung ialah 1.7 dan dpendensinya juga harus yang mendukung. Untuk bsa mengetahui dependensi karena manual, mau tidak mau harus mencoba satu persatu pada modul, maksudnya ialah karena yang digunakan ialah ehcache, maka masukkan tim-ehcache, kemudian run, jika aplikasi benar dan config benar, error yang dicapai biasanya hanya karena dependensi yang belum terpenuhi, dari situlah kita bisa melakukan download lagi module tim-nya.

<logs>terracotta/client-logs</logs>

</clients>

<application>

<dso>

<instrumented-classes>

<include>

<class-expression>

org.terracotta.sample.UserEhcacheExample

</class-expression>

</include>

</instrumented-classes>

</dso>

</application>

</tc-config>

</terracottaConfig>

kemudian pada instrumented clas pada blok class expression, class yang digunakan ialah class yang ingin dishare objeknya antar jvm, pada contoh yang tidak trivial, class pada blok ini biasanya class yang bersifat akan menjadi data yang akan dishare. Root tidak perlu didefinisikan jika datanya ada pada cache, karena kita menggunakan tim, maka tim akan secara otomatis menginisialisaikannya, nanti akan terlihat pada terracotta developer console. Disi blok konfigurasi terracotta berakhir

<defaultCache

maxElementsInMemory=“10000″

eternal=“false”

timeToIdleSeconds=“120″

timeToLiveSeconds=“120″

overflowToDisk=“true”

diskSpoolBufferSizeMB=“30″

maxElementsOnDisk=“10000000″

diskPersistent=“false”

diskExpiryThreadIntervalSeconds=“120″

memoryStoreEvictionPolicy=“LRU”

/>

<cache name=“sampleTerracottaCache”

maxElementsInMemory=“1000″

eternal=“false”

timeToIdleSeconds=“3600″

timeToLiveSeconds=“1800″

overflowToDisk=“false”>

<terracotta/>

</cache>

</ehcache>

untuk konfigurasi terakhir, yaitu default cache dan cache yang akan dipanggil, yang perlu diperhatikan disini ialah pada cache dengan nama sampleTerracottaCache, karena akan kita integrasikan pada terracotta, kita harus berikan tag <terracotta/> pada cache sebelum cache configuration kita tutup. Hal ini yang banyak tidak diikutkan pada setiap contoh pada buku Terracotta, juga blog Alex Miller http://tech.puredanger.com/2008/06/17/distributed-ehcache-with-terracotta/ bahkan. Hal ini hanya bisa dilihat pada dokumentasi Terracotta dan kurang diperhatikan sehingga integrasi biasanya gagal(hal yang saya alami). Selanjutnya ialah running terhadap aplikasi kita, nah, saat running, yang dilakukan ialah “run as java application”, hal ini justru sukses tanpa error. Berikut hasilnya:

selanjutnya saat running kedua, hasilnya ialah sebagai berikut:

cache hit semua dengan kata lain distribute cache sederhana kita berhasil, hal ini bisa kita lihat pada terracotta developer console dibawah ini:’

terlihat root sudah secara otomatis dibuat pada ehcache dengan valuenya, terlihat adanya blockk ehcache store, ini merupakn blok integrasi ehcache dengan terracotta, dan pada developer console pada live object count, terlihat statistik terhadap objek yang dishare dan dicache masih hidup dalam memori.

Dengan kata lain, integrasi telah berhasil. Permasalahan selama ini adalah pada konfigurasi dan tim-yang didownload.

Maka untuk minggu depan kita bisa maju ke hibernate caching dengan terracotta.

Sumber:

http://forums.terracotta.org/forums/posts/list/3667.page#20160.

http://tech.puredanger.com/2008/06/17/distributed-ehcache-with-terracotta/

definitive guide to terracotta

Categories: Uncategorized

Python:2nd

pada artikel sebelumnya kita hanya membahas sedikit tentang python, sekarang kita akan membahas lebih dalam dan lebih dekat dengan bahasa ini.

Python adalah bahasa pemrograman dinamis yang mendukung pemrograman berorientasi obyek. Python dapat digunakan untuk berbagai keperluan pengembangan perangkat lunak dan dapat berjalan di berbagai platform sistem operasi. Seperti halnya bahasa pemrograman dinamis, python seringkali digunakan sebagai bahasa skrip dengan interpreter yang teintergrasi dalam sistem operasi. Saat ini kode python dapat dijalankan pada sistem berbasis:

Python didistribusikan dengan beberapa lisensi yang berbeda dari beberapa versi. Namun pada prinsipnya Python dapat diperoleh dan dipergunakan secara free, bahkan untuk kepentingan komersial. Lisensi Python tidak bertentangan baik menurut definisi Open Source maupun General Public License (GPL)

Sejarah

Python dikembangkan oleh Guido van Rossum pada tahun 1990 di CWI, Amsterdam sebagai kelanjutan dari bahasa pemrograman ABC. Versi terakhir yang dikeluarkan CWI adalah 1.2.

Tahun 1995, Guido pindah ke CNRI sambil terus melanjutkan pengembangan Python. Versi terakhir yang dikeluarkan adalah 1.6. Tahun 2000, Guido dan para pengembang inti Python pindah ke BeOpen.com yang merupakan sebuah perusahaan komersial dan membentuk BeOpen PythonLabs. Python 2.0 dikeluarkan oleh BeOpen. Setelah mengeluarkan Python 2.0, Guido dan beberapa anggota tim PythonLabs pindah ke DigitalCreations.

Saat ini pengembangan Python terus dilakukan oleh sekumpulan pemrogram yang dikoordinir Guido dan Python Software Foundation. Python Software Foundation adalah sebuah organisasi non-profit yang dibentuk sebagai pemegang hak cipta intelektual Python sejak versi 2.1 dan dengan demikian mencegah Python dimiliki oleh perusahaan komersial. Saat ini distribusi Python sudah mencapai versi 2.6.1 dan versi 3.0.

Nama Python dipilih oleh Guido sebagai nama bahasa ciptaannya karena kecintaan guido pada acara televisi Monty Python’s Flying Circus. Oleh karena itu seringkali ungkapan-ungkapan khas dari acara tersebut seringkali muncul dalam korespondensi antar pengguna Python.

Fitur

Beberapa fitur yang dimiliki Python adalah:

  • memiliki kepustakaan yang luas; dalam distribusi Python telah disediakan modul-modul ‘siap pakai’ untuk berbagai keperluan.
  • memiliki tata bahasa yang jernih dan mudah dipelajari.
  • memiliki aturan layout kode sumber yang memudahkan pengecekan, pembacaan kembali dan penulisan ulang kode sumber.
  • berorientasi obyek.
  • memiliki sistem pengelolaan memori otomatis (garbage collection, seperti java)
  • modular, mudah dikembangkan dengan menciptakan modul-modul baru; modul-modul tersebut dapat dibangun dengan bahasa Python maupun C/C++.
  • memiliki fasilitas pengumpulan sampah otomatis, seperti halnya pada bahasa pemrograman Java, python memiliki fasilitas pengaturan penggunaan ingatan komputer sehingga para pemrogram tidak perlu melakukan pengaturan ingatan komputer secara langsung.

Sumber:http://id.wikipedia.org/wiki/Python_(bahasa_pemrograman)

Categories: Uncategorized

Pengenalan UML

UML (Unified Modelling Language)

Dalam suatu proses pengembangan software, analisa dan rancangan telah merupakan terminologi yang sangat tua. Pada saat masalah ditelusuri dan spesifikasi dinegoisasikan, dapat dikatakan kita berada pada tahap rancangan. Merancang adalah menemukan suatu cara untuk menyelesaikan masalah, salah satu tool / model untuk merancang pengembangan software yang berbasis object oriented adalah UML.

Konsep Objek

Obyek dalam ‘software analysis & design’ adalah sesuatu berupa konsep (concept), benda (thing), dan sesuatu yang membedakannya dengan lingkungannya. Secara sederhana obyek adalah mobil, manusia, alarm dan lainlainnya. Tapi obyek dapat pula merupakan sesuatu yang abstrak yang hidup didalam sistem seperti tabel, database, event, system messages. Obyek dikenali dari keadaannya dan juga operasinya. Sebagai contoh sebuah mobil dikenali dari warnanya, bentuknya, sedangkan manusia dari suaranya. Ciriciri ini yang akan membedakan obyek tersebut dari obyek lainnya.

Alasan mengapa saat ini pendekatan dalam pengembangan software dengan object-oriented, pertama adalah scalability dimana obyek lebih mudah dipakai untuk menggambarkan sistem yang besar dan komplek. Kedua dynamic modeling, adalah dapat dipakai untuk permodelan sistem dinamis dan real time.

Teknik Dasar OOA/D (Object-Oriented Analysis/Design)

Dalam dunia pemodelan, metodologi implementasi obyek walaupun terikat kaidah-kaidah standar, namun teknik pemilihan obyek tidak terlepas pada subyektifitas software analyst & designer. Beberapa obyek akan diabaikan dan beberapa obyek menjadi perhatian untuk diimplementasikan di dalam sistem. Hal ini sah-sah saja karena kenyataan bahwa suatu permasalahan sudah tentu memiliki lebih dari satu solusi. Ada 3 (tiga) teknik/konsep dasar dalam OOA/D, yaitu pemodulan (encapsulation), penurunan (inheritance) dan polymorphism.

Pemodulan (Encapsulation)

Pada dunia nyata, seorang ibu rumah tangga menanak nasi dengan menggunakan rice cooker, ibu tersebut menggunakannya hanya dengan menekan tombol. Tanpa harus tahu bagaimana proses itu sebenarnya terjadi. Disini terdapat penyembunyian informasi milik rice cooker, sehingga tidak perlu diketahui seorang ibu. Dengan demikian menanak nasi oleh si ibu menjadi sesuatu yang menjadi dasar bagi konsep information hiding.

Penurunan (Inheritance)

Obyek-obyek memiliki banyak persamaan, namun ada sedikit perbedan. Contoh dengan beberapa buah mobil yang mempunyai kegunaan yang berbeda-beda. Ada mobil bak terbuka seperti truk, bak tertutup seperti sedan dan minibus. Walaupun demikian obyek-obyek ini memiliki kesamaan yaitu teridentifikasi sebagai obyek mobil, obyek ini dapat dikatakan sebagai obyek induk (parent). Sedangkan minibus dikatakan sebagai obyek anak (child), hal ini juga berarti semua operasi yang berlaku pada mobil berlaku juga pada minibus.

Polymorphism

Pada obyek mobil, walaupun minibus dan truk merupakan jenis obyek mobil yang sama, namun memiliki juga perbedaan. Misalnya suara truk lebih keras dari pada minibus, hal ini juga berlaku pada obyek anak (child) melakukan metoda yang sama dengan algoritma berbeda dari obyek induknya. Hal ini yang disebut polymorphism, teknik atau konsep dasar lainnya adalah ruang lingkup / pembatasan. Artinya setiap Obyek mempunyai ruang lingkup kelas, atribut, dan metoda yang dibatasi.

Sumber: pengenalan UML.pdf

Categories: Uncategorized

Cloud Computing

Cloud computing tidak lama lagi akan menjadi realita, dan ini akan memaksa para IT professional untuk cepat mengadaptasi yang dimaksud dengan teknologi ini. Akibat dari keadaan sosial ekonomi yang terus mengalami revolusi yang sangat cepat sehingga melahirkan cloud computing, dimana teknologi ini dibutuhkan untuk kecepatan dan realibilitas yang lebih dari teknology yang sebelumnya sehingga teknologi ini nantinya akan mencapai pada tingkat investasi dalam term cloud service yang cepat dan mudah.

Cloud sudah hadir di depan kita saat ini, namun apa itu cloud ? kemana tujuanya ? dan apa resikonya? dan bagaimana organisasi IT mempersiapkan ini ? itulah pertanyaan yang setidaknya akan hadir oleh beberapa praktisi ataupun peminat IT, Cloud computing pada dasaranya adalah menggunakan Internet-based service untuk mensupport business process. Cloud service biasanya memiliki beberapa karakteristik, diantaranya adalah:

Sangat cepat di deploy, sehingga cepat berarti instant untuk implementasi.

  • Nantinya biaya start-up teknologi ini mungkin akan sangat murah atau tidak ada dan juga tidak ada investasi kapital.
  • Biaya dari service dan pemakaian akan berdasarkan komitmen yang tidak fix.
  • Service ini dapat dengan mudah di upgrade atau downgrade dengan cepat tampa adanya Penalty.
  • Service ini akan menggunakan metode multi-tenant (Banyak customer dalam 1 platform).
  • Kemampuan untuk meng customize service akan menjadi terbatas.

Teknologi cloud akan memberikan kontrak kepada user untuk service pada 3 tingkatan:

  • Infrastructure as Service, hal ini meliputi Grid untuk virtualized server, storage & network. Contohnya seperti  Amazon Elastic Compute Cloud dan Simple Storage Service.
  • Platform-as-a-service: hal ini memfokuskan pada aplikasi dimana dalam hal ini memungkinkan developer untuk tidak memikirkan hardware dan tetap fokus pada application development nya tampa harus mengkhawatirkan operating system, infrastructure scaling, load balancing dan lainya. Contoh nya yang telah mengimplementasikan ini adalah Force.com dan Microsoft Azure investment.
  • Software-as-a-service: Hal ini memfokuskan pada aplikasi denga Web-based interface yang diakses melalui Web Service dan Web 2.0. contohnya adalah Google Apps, SalesForce.com dan social network application seperti FaceBook.

Beberapa investor saat ini masih mencoba untuk mengekplorasi adopsi teknologi cloud ini untuk dijadikan bisnis sebagaimana  Amazon dan Google telah memiliki penawaran khusus pada untuk teknologi cloud, Microsoft dan IBM juga telah melakukan investasi jutaan dollar untuk ini.

Melihat dari tren ini kita dapat memprediksi masa depan, standard teknologi akan menjadi lebih sederhana karena ketersediaan dari banyak cloud service.

Lalu apa resikonya ?

Sebagaimana yang dikatakan sebagai bisnis service, dengan teknologi cloud anda sebaiknya mengetahui dan memastikan apa yang anda bayar dan apa yang anda investasikan sepenuhnya memang untuk kebutuhan anda menggunakan service ini. Anda harus memperhatikan pada beberapa bagian yaitu:

  • Service level – Cloud provider mungkin tidak akan konsisten dengan performance dari application atau transaksi. Hal ini mengharuskan anda untuk memahami service level yang anda dapatkan mengenai transaction response time, data protection dan kecepatan data recovery.
  • Privacy - Karena orang lain / perusahaan lain juga melakukan hosting kemungkinan data anda akan keluar atau di baca oleh pemerintah U.S. dapat terjadi tampa sepengetahuan anda atau approve dari anda.
  • Compliance - Anda juga harus memperhatikan regulasi dari bisnis yang anda miliki, dalam hal ini secara teoritis cloud service provider diharapkan dapat menyamakan level compliance untuk penyimpanan data didalam cloud, namun karena service ini masih sangat muda anda diharapkan untuk berhati hati dalam hal penyimpanan data.
  • Data ownership – Apakah data anda masih menjadi milik anda begitu data tersebut tersimpan didalam cloud? mungkin pertanyaan ini sedikit aneh, namun anda perlu mengetahui seperti hal nya yang terjadi pada Facebook yang mencoba untuk merubah terms of use aggrement nya yang mempertanyakan hal ini.
  • Data Mobility – Apakah anda dapat melakukan share data diantara cloud service? dan jika anda terminate cloud relationship bagaimana anda mendapatkan data anda kembali? Format apa yang akan digunakan ? atau dapatkah anda memastikan kopi dari data nya telah terhapus ?

Untuk sebuah service yang masih tergolong kritis untuk perusahaan anda, saran terbaik adalah menanyakan hal ini se detail detailnya dan mendapatkan semua komitmen dalam keadaan tertulis.

Apa yang dilakukan Smart Company saat ini ?

Ada banyak kesempatan pada organisasi IT khususnya untuk mensosialisasikan cloud service. Banyak organisasi yang mencoba untuk menambahkan firut ini kepada infrastruktur yang mereka miliki sebelumnya untuk mengambil keuntungan dari “cloud bursting“; khususnya jika anda membutuhkan kapasitas ekstra atau ekstra aktifitas, anda dapat memanfaatkan cloud ketimbang melakukan investasi resource secara in-house.

Development/test dan beberapa aktifitas yang mirip juga menjadi tempat yang bagus untuk cloud, memungkinkan anda untuk mengurangi pengeleluaran perkapita dan biaya data center yang terus meingkat dari sisi kecepatan dan uptime.

Sedangkan perusahaan yang tidak segan segan untuk mengimplementasi teknologi cloud untuk data mereka dan menyimpan nya sebagai fasilitas mereka sendiri untuk memastikan kebijakan perusahaan tersimpan dengan baik tentunya akan lebih baik, sehingga memastikan proses komputerasisasi pada cloud sebagai sistem proses yang dibutuhkan akan lebih independen.

Apakah anda siap ?

Jika organisasi anda baru saja mengeksplorasi teknologi cloud ada beberapa cloud service yang sudah cukup mapan dan dapat di pertimbangkan misalnya sebagai e-mail service. Namun untuk masalah sekuriti, dengan mengembangkan internal infrastruktur anda menjadi model cloud akan lebih baik.

Dengan begini role IT kini ikut berperan dalam hal business model yang dibutuhkan untuk perekonomian saat ini. Bagaimana anda meningkatkan kecepatan dan uptime ? dan bagaimana anda dapat men support business operation dengan sedikit dan pengeluaran yang fix?

Langkah awal yang harus anda lakukan adalah mempelajari sistem kontrak dari cloud service. pastikan setiap process menjadi simple, dapat berulang ulang dan menjadi nilai tambah untuk bisnis anda.

Kedua, anda harus mengidentifikasi service apa yang dapat anda manfaatkan di dalam cloud dan mana yang seharusnya bersifat internal. Hal ini sangat penting untuk anda ketahui mengenai system dan service core yang dapat dimanfaatkan oleh bisnis anda. dan sebaiknya anda mengkategorikan beberapa elemen bisnis anda berdasarkan resiko dari penggunaan cloud service.

Langkah terakhir, anda harus melakukan strategi sourcing untuk mendapatkan biaya yang sangat murah, namun memiliki scalability dan flexibility untuk kebutuhan bisnis anda. Hal ini termasuk pertimbangan akan proteksi data ownership dan mobility, compliance dan beberapa element seperti halnya kontrak IT tradisional.

Beberapa penjelasan mengenai Cloud Computing lainya:

Disadur dari: David Robbins, Network World
Robbins adalah seorang CTO untuk IT pada perusahaan NetApp. Dia bertanggung jawab untuk mengidentifikasi dan memilih teknologi baru dan mengadopsi teknologi tersebut yang menjadu road map dan timing untuk NetApp IT delivery.

Sumber: http://teknoinfo.web.id/ Teknologi Cloud Computing (sebuah pendekatan) » TeknoInfo.html

Oleh :raffaell

Categories: Uncategorized
Follow

Get every new post delivered to your Inbox.