pengalaman

(Hadoop) Make Sure Your Datanode File System Have the Correct Permission!

Posted on Updated on

Kalau pernah ngalamin error seperti di bawah ini pas lagi mau jalanin MapReduce task, ini kemungkinan besar masalahnya ada pada file directory permission di salah satu datanode di-tempat MapReduce nya berjalan (via YARN).

Logging initialized using configuration in jar:file:/opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/jars/hive-common-0.13.1-cdh5.3.0.jar!/hive-log4j.properties
Total jobs = 2
Launching Job 1 out of 2
Number of reduce tasks not specified. Estimated from input data size: 1
In order to change the average load for a reducer (in bytes):
  set hive.exec.reducers.bytes.per.reducer=
In order to limit the maximum number of reducers:
  set hive.exec.reducers.max=
In order to set a constant number of reducers:
  set mapreduce.job.reduces=
Starting Job = job_1420709500935_0492, Tracking URL = http://**********:8088/proxy/application_1420709500935_0492/
Kill Command = /opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/lib/hadoop/bin/hadoop job  -kill job_1420709500935_0492
Hadoop job information for Stage-1: number of mappers: 2; number of reducers: 1
2015-02-03 01:05:26,016 Stage-1 map = 0%,  reduce = 0%
2015-02-03 01:05:36,674 Stage-1 map = 50%,  reduce = 0%, Cumulative CPU 6.15 sec
2015-02-03 01:05:55,424 Stage-1 map = 100%,  reduce = 0%, Cumulative CPU 11.77 sec
2015-02-03 01:06:13,084 Stage-1 map = 100%,  reduce = 100%, Cumulative CPU 15.43 sec
MapReduce Total cumulative CPU time: 15 seconds 430 msec
Ended Job = job_1420709500935_0492
Launching Job 2 out of 2
Number of reduce tasks not specified. Estimated from input data size: 1
In order to change the average load for a reducer (in bytes):
  set hive.exec.reducers.bytes.per.reducer=
In order to limit the maximum number of reducers:
  set hive.exec.reducers.max=
In order to set a constant number of reducers:
  set mapreduce.job.reduces=
Starting Job = job_1420709500935_0493, Tracking URL = http://**********:8088/proxy/application_1420709500935_0493/
Kill Command = /opt/cloudera/parcels/CDH-5.3.0-1.cdh5.3.0.p0.30/lib/hadoop/bin/hadoop job  -kill job_1420709500935_0493
Hadoop job information for Stage-2: number of mappers: 0; number of reducers: 0
2015-02-03 01:06:29,383 Stage-2 map = 0%,  reduce = 0%
Ended Job = job_1420709500935_0493 with errors
Error during job, obtaining debugging information...
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.mr.MapRedTask
MapReduce Jobs Launched:
Stage-Stage-1: Map: 2  Reduce: 1   Cumulative CPU: 15.43 sec   HDFS Read: 75107359 HDFS Write: 48814 SUCCESS
Stage-Stage-2:  HDFS Read: 0 HDFS Write: 0 FAIL
Total MapReduce CPU Time Spent: 15 seconds 430 msec

Ketika kita melihat lebih jauh lagi error msg di:

 http://**********:8088/proxy/application_1420709500935_0493/
Application application_1420709500935_0493 failed 2 times due to AM Container for appattempt_1420709500935_0493_000002 exited with exitCode: -1000 due to: Not able to initialize distributed-cache directories in any of the configured local directories for user USERNAME
.Failing this attempt.. Failing the application.

Nah kalau gue, datanode root directory-nya di filesystem ada di:

/disk1/, /disk2/, /disk3/

Jadi.. supaya gue terbebas dari error msg diatas, gue harus make sure directories ini mempunyai permission yang cocok (yarn:yarn) (Karena MapReduce gue di manage oleh YARN, supaya default user nya bisa create file cache nya)

/disk1/yarn/nm/usercache
/disk2/yarn/nm/usercache
/disk3/yarn/nm/usercache

Cara nya gimana?

chown -R yarn:yarn /disk1/yarn/nm/usercache
chown -R yarn:yarn /disk2/yarn/nm/usercache
chown -R yarn:yarn /disk3/yarn/nm/usercache

Advanced Search di ArsipBerita.com

Posted on

Iseng2 lagi ngga ada kerjaan, ya udah deh gue bikin fitur advanced search di untuk web Arsip Berita.

arsipberita.com advanced search
arsipberita.com advanced search

– Simple Search

keyword: kunjungan presiden sby ke surabaya
maka berita yang akan dicari mengandung kata2 kunjungan presiden sby ke surabaya dari judul dan konten berita.

 

– Title Search

keyword: @title timnas indonesia
maka berita yang akan dicari mengandung kata2 timnas indonesia dari judul berita.

 

– Content Search

keyword: @body dewi persik
maka berita yang akan dicari mengandung kata2 dewi persik dari konten berita.

 

– Exact Term Search

keyword: “timnas indonesia”
maka berita yang akan dicari mengandung dari kata yang benar – benar diawali dan diakhir dari tanda petik “timnas berita” dari judul dan konten berita.

 

– Negative Search

keyword: harga minyak -perusahaan
maka berita yang akan dicari mengandung kata2 harga minyak tetapi tidak mengandung kata perusahaan dari judul dan konten berita.
anda juga bisa menambahkan @title atau @body disini dan juga exact term search, contoh: @title “minyak” @body “harga minyak” -perusahaan

Tips Bagi Yang Suka Main AutoBlog Atau AGC Dengan WordPress

Posted on

Post ini adalah selentingan dari diskusi yang sedang berlangsung di salah satu thread gue di forum adsense-id yang kebetulan berisi saran buat optimisasi wordpress bagi yang suka main agc atau autoblog. Nah, karena sepertinya bagus untuk di share, jadi gue sharing aja deh disini.

Jadi intinya, bagi yang suka maen2 gituan, gue saranin elo harus wajib punya 3 plugin ini untuk optimisasi wordpress elo.

  1. Wp-Super-Cache
  2. Wp-Minify
  3. Db-Cache-Reloaded

Kenapa gue ngga rekomendasikan w3 total cache?

Ketika elo punya blog yang banyak agc atau autopost nya, db caching di wordpress ngga akan begitu pengaruh. Soalnya kan akan banyak post yang dimasukin sama wordpress nya ke database dan bakal sering add post terus. Karena wordpress basic query sql nya pake LIMIT m,n bukan LIMIT m, jadi setiap ada post baru yang biasanya ada tiap beberapa menit sekali db cache nya akan hangus dan harus scan the whole table wp_posts lagi untuk dapetin cache baru. makanya khusus untuk arsipberita gue lebih milih wp-super-cache yang provide html static file dari pada w3 total cache.

karena salah satu alasan ini, untuk yang bermain autoblog atau agc, menurut gw lebih baik pake wp-supercache + db-cache-reloaded + wp-minify dari pada pake w3-total-cache 🙂

 

My Super WordPress Site

Posted on Updated on

Waktu itu gue disuruh buat website yang bisa ngindex berita dari berbagai sumber, nah terus gue bingung kan mau bikin dari scratch atau pake cms apa gitu. Lalu kepikiran deh pake wordpress karena udah banyak plugin2 dan core engine yang berguna untuk posting dengan multiple category dan tagging. Nah setelah gue putusin untuk make wordpress, terus mulai deh gue bikin ArsipBerita.com menggunakan wordpress.

ArsipBerita.com adalah sebuah website yang tugasnya meng-arsip berita dari berbagai sumber dengan waktu yang hampir real time. Website ini sudah berumur sekitar 1 tahun dan ketika post ini ditulis saat ini arsip berita sudah meng-index ratusan ribu berita dan mempunyai sekitar 25000 s/d 30000 Pages View / hari.

Kok bisa sih wordpress dipake untuk ngindex berita, gimana cara nya tuh?

gue buat crawler untuk jalan2 ke sumber2 berita dan langsung di arsip ke website Arsip Berita.

Gimana sih topologi server-nya Arsip Berita sampe bisa nahan banyak pengunjung gitu?

1 Server Web – running Apache (untuk serving php) dan Nginx (untuk serving static file images, css, js).

2 Server MySQL – Master dan Slave untuk load balancing.

1 Server SphinxSearch – untuk indexing post nya arsip berita dikarenakan banyak pengunjung yg menggunakan fitur search untuk mencari berita.

Optimisasi apa aja yang sudah dilakukan untuk Arsip Berita?

  1. Menggunakan Wp-Super-Cache untuk static page caching.
  2. Menggunakan Percona/MariaDB build untuk MySQL-nya dan engine data xtraDB.
  3. Menggunakan custom auto Tag plugin berdasaarkan most relevant keyword yang ada di dalam konten berita-nya untuk membantu pengelompokan berita.
  4. Menggunakan Wp-Minify untuk menghemat bandwidth dengan cara menghilangkan extra white-space di dalam html yg ditampilkan ke user.
  5. Menggunakan FreeBSD dan Linux untuk OS Server 🙂
  6. Tweaking macem2 config dan system file berdasarkan trial-n-error sampe dapet hasil yang maksimal.
  7. Tweaking dan modifikasi wordpress core supaya lebih responsif ketika sudah mempunyai post yang besar.

Apache Benchmark Result:

debian:~# ab -n 10000 -c 10 http://arsipberita.com/
This is ApacheBench, Version 2.3 <$Revision: 655654 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking arsipberita.com (be patient)
Completed 1000 requests
Completed 2000 requests
Completed 3000 requests
Completed 4000 requests
Completed 5000 requests
Completed 6000 requests
Completed 7000 requests
Completed 8000 requests
Completed 9000 requests
Completed 10000 requests
Finished 10000 requests

Server Software:        Apache/2.2.11
Server Hostname:        arsipberita.com
Server Port:            80

Document Path:          /
Document Length:        50291 bytes

Concurrency Level:      10
Time taken for tests:   4.727 seconds
Complete requests:      10000
Failed requests:        0
Write errors:           0
Total transferred:      506790000 bytes
HTML transferred:       502910000 bytes
Requests per second:    2115.41 [#/sec] (mean)
Time per request:       4.727 [ms] (mean)
Time per request:       0.473 [ms] (mean, across all concurrent requests)
Transfer rate:          104694.34 [Kbytes/sec] received

Connection Times (ms)
min  mean[+/-sd] median   max
Connect:        0    0   0.1      0       3
Processing:     2    4   1.1      4      20
Waiting:        1    2   0.9      2      18
Total:          2    5   1.1      4      21

Percentage of the requests served within a certain time (ms)
50%      4
66%      5
75%      5
80%      5
90%      6
95%      6
98%      8
99%      9
100%     21 (longest request)

Ya udah segini aja dulu ceritanya, kalau mau coba performa Arsip Berita, langsung aja ke ArsipBerita.com.

PS: Server Arsip Berita ada di Indonesia, bottle-neck nya cuman bandwidth international nya aja yg terbatas jadi kurang wuus2 kalo di akses dari luar negeri 😦

UPDATE 11/10/2013
Project-nya udah mati karena gue udah kerja di tempat lain.