25 7 / 2014

image

Kafka; Linkedin tarafından geliştirilip daha sonra Apache bünyesine dahil olmuş distributed bir messaging sistemdir. 

Kafka kurulumunu Ubuntu 14.04 işletimi sistemi üzerinde çalışacak şekilde anlatıyor olacağım. Kafka kurulumna geçmeden önce Java 7 ve Zookeeper kurulumunu yapmamız gerekmektedir. Java ve Zookeeper kurulumu yaptıktan sonra aşağıdaki adımları yaptıktan sonra Kafka serverımız hazır olmuş olacaktır. (Installing Java 7on Ubuntu) (Zookeeper Cluster Setup on Ubuntu)

> cd /opt
> sudo mkdir /opt/kafka-logs
> sudo chown -R ubuntu:ubuntu kafka-logs
> sudo wget http://www.eu.apache.org/dist/kafka/0.8.1.1/kafka-0.8.1.1-src.tgz
> sudo tar zxf kafka-0.8.1.1-src.tgz
> sudo mv kafka-0.8.1.1-src kafka
> sudo chown -R ubuntu:ubuntu kafka
> cd kafka
> ./gradlew -PscalaVersion=2.9.2 jarAll

Gradle ile jar ları hazırladıktan sonra sıra Kafka’nın config ayarlarını yapmaya geldi.

> vim config/server.properties
bu dosya içindeki ayarları aşağıdakiler ile değiştiriyoruz.

broker.id=1
port=9092
host.name=kafka1
num.network.threads=8
num.io.threads=8
num.replica.fetchers=4
replica.fetch.max.bytes=1048576
replica.fetch.wait.max.ms=500
message.max.bytes=1000000
replica.high.watermark.checkpoint.interval.ms=5000
replica.socket.timeout.ms=30000
replica.socket.receive.buffer.bytes=65536
replica.lag.time.max.ms=10000
replica.lag.max.messages=4000
controller.socket.timeout.ms=30000
controller.message.queue.size=10
socket.send.buffer.bytes=1048576
socket.receive.buffer.bytes=1048576
socket.request.max.bytes=104857600
queued.max.requests=16
fetch.purgatory.purge.interval.requests=100
producer.purgatory.purge.interval.requests=100
log.dirs=/opt/kafka-logs
num.partitions=8
sage.max.bytes=1000000
auto.create.topics.enable=true
log.index.interval.bytes=4096
log.index.size.max.bytes=10485760
log.retention.hours=168
log.flush.interval.ms=10000
log.flush.interval.messages=20000
log.flush.scheduler.interval.ms=2000
log.roll.hours=168
log.cleanup.interval.mins=30
log.segment.bytes=1073741824
zookeeper.connect=zookeeper:2184,zookeeper:2185,zookeeper:2186
#log.flush.interval.messages=10000
#log.flush.interval.ms=1000
#log.default.flush.scheduler.interval.ms=1000
#log.retention.hours=168
#log.segment.bytes=536870912
log.retention.check.interval.ms=60000
log.cleaner.enable=false
zookeeper.connection.timeout.ms=1000000
zookeeper.sync.time.ms=2000

Kafka’nın config ayarlarını da yaptıktan sonra serverımızı çalıştırabiliriz.

> nohup /opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties &

Bırden fazla Kafka server kuracağınız zaman broker.id değişkenlerinin farklı olması gerekmektedir. Ve host.name değiştkenini ipadress vermemeniz gerekmektedir.

Kafka dokümantasyonu için https://kafka.apache.org/documentation.html
Kafka Wiki sayfas için https://cwiki.apache.org/confluence/display/KAFKA/Index

Kafka’nın çıkış noktasını anlatan bu yazıyı okumanızı da tavsiye ederim. 
http://engineering.linkedin.com/distributed-systems/log-what-every-software-engineer-should-know-about-real-time-datas-unifying

25 7 / 2014

image

Bu yazımda Apache Zookeeper’ın kurulumunu anlatıyor olacağım. Zookeeper özellikle distributed sistemlerin haberleşmesi ve konfigurasyonu için merkezi bir yönetim servisi olarak kullanılmaktadır.

Zookeeper kurulumuna başlamadan önce makinemize Java kurulu olmasi gerekmektedir. Java kurulumunu anlatan yazıma buradan bakabilirsiniz. (Installing Java 7 on Ubuntu)

Zookeeperlarımızı kuracağımız klasörü oluşturup zookeeper ı indiriyoruz.
> sudo mkdir /opt/zookeeper
> sudo chown ubuntu:ubuntu /opt/zookeeper
> sudo wget http://www.eu.apache.org/dist/zookeeper/stable/zookeeper-3.4.6.tar.gz
> tar zxf zookeeper-3.4.6.tar.gz

> cp -R zookeeper-3.4.6 /opt/zookeeper/zookeeper1
> cp -R zookeeper-3.4.6 /opt/zookeeper/zookeeper2
> cp -R zookeeper-3.4.6 /opt/zookeeper/zookeeper3

Zookeeper log larının oluşturulacağı klasörleri oluşturuyoruz
mkdir -p /opt/zookeeper/log/zookeeper1
mkdir -p /opt/zookeeper/log/zookeeper2
mkdir -p /opt/zookeeper/log/zookeeper3

Zookeeper data dosyarlarının oluşturulacağı klasörleri oluşturuyoruz
mkdir -p /opt/zookeeper/data/zookeeper1
mkdir -p /opt/zookeeper/data/zookeeper2
mkdir -p /opt/zookeeper/data/zookeeper3

Zookeeper 3.4.6 sürümü config dosyasında tanımladığımız dataLogDir değişkenini kullanamıyor. Bu bug düzeltmek için aşağıdaki değişiklikleri yapmamız gerekiyor.
> vim /opt/zookeeper/zookeeper1/bin/zkServer.sh
#line 94
ZOO_LOG_DIR=”$(grep “^[[:space:]]*dataLogDir” “$ZOOCFG” | sed -e ‘s/.*=//’)”

> vim /opt/zookeeper/zookeeper2/bin/zkServer.sh
#line 94
ZOO_LOG_DIR=”$(grep “^[[:space:]]*dataLogDir” “$ZOOCFG” | sed -e ‘s/.*=//’)”

> vim /opt/zookeeper/zookeeper3/bin/zkServer.sh
#line 94
ZOO_LOG_DIR=”$(grep “^[[:space:]]*dataLogDir” “$ZOOCFG” | sed -e ‘s/.*=//’)”

Zookeeper log larının dosyaya da yazılması için aşağıdaki değişiklikleri yapıyoruz.
> vim /opt/zookeeper/zookeeper1/conf/log4j.properties
zookeeper.root.logger=INFO, CONSOLE, ROLLINGFILE, TRACEFILE

> vim /opt/zookeeper/zookeeper2/conf/log4j.properties
zookeeper.root.logger=INFO, CONSOLE, ROLLINGFILE, TRACEFILE

> vim /opt/zookeeper/zookeeper3/conf/log4j.properties
zookeeper.root.logger=INFO, CONSOLE, ROLLINGFILE, TRACEFILE

Zookeeper config dosyasını aşağıdaki gibi değiştiriyoruz.
> vim /opt/zookeeper/zookeeper1/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper/data/zookeeper1
dataLogDir=/opt/zookeeper/log/zookeeper1
clientPort=2184
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890

> vim /opt/zookeeper/zookeeper2/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper/data/zookeeper2
dataLogDir=/opt/zookeeper/log/zookeeper2
clientPort=2185
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890

> vim /opt/zookeeper/zookeeper3/conf/zoo.cfg
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/opt/zookeeper/data/zookeeper3
dataLogDir=/opt/zookeeper/log/zookeeper3
clientPort=2186
server.1=localhost:2888:3888
server.2=localhost:2889:3889
server.3=localhost:2890:3890


Son olarak da her Zookeeper instance için ayrı myid değeri oluşturuyoruz.
> touch /opt/zookeeper/data/zookeeper1/myid && echo ‘1’ > /opt/zookeeper/data/zookeeper1/myid
> touch /opt/zookeeper/data/zookeeper2/myid && echo ‘2’ > /opt/zookeeper/data/zookeeper2/myid
> touch /opt/zookeeper/data/zookeeper3/myid && echo ‘3’ > /opt/zookeeper/data/zookeeper3/myid

Aşağıdaki sh scripti ile zookeeper server larımızı çalıştırıyoruz.
> /opt/zookeeper/zookeeper1/bin/zkServer.sh start
> /opt/zookeeper/zookeeper2/bin/zkServer.sh start
> /opt/zookeeper/zookeeper3/bin/zkServer.sh start

Bu kurulumu tek makine yerine ayrı ayrı sunuculara da uygulayabilirsiniz. O zaman portlarını farklı vermenize gerek olmayacaktır. Ama myid dosyaları içine yazacağınız numaraların farklı olması gerekmektedir.

17 7 / 2014

Ubuntu Oracle JDK yerine Open JDK yüklü olarak geliyor. Ubuntu package leri içierisinden de Oracle JDK kurulumu yapılamıyor. Bunun webup8team repolarını eklememiz gerekiyor.

> sudo apt-get update
> sudo apt-get install python-software-properties software-properties-common
> sudo add-apt-repository ppa:webupd8team/java
> sudo apt-get update

Bu adımlardan sonra istediğimiz Oracle Java versiyonunu kurabiliriz:

  • oracle-java6-installer
  • oracle-java7-installer
  • oracle-java8-installer
  • oracle-jdk7-installer 
  • oracle-java6-set-default
  • oracle-java7-set-default
  • oracle-java8-set-default


> sudo apt-get install oracle-java7-installer

22 3 / 2014

OpenDNS
208.67.222.222
208.67.220.220

Opennicproject
151.236.6.156
118.88.20.195

DynDNS
216.146.35.35
216.146.36.36

Dnsadvantage
156.154.70.1
156.154.71.1

SafeDNS
195.46.39.39
195.46.39.40

Comodo
8.26.56.26
8.20.247.20

Norton
198.153.192.1
198.153.194.1

Verizon DNS
4.2.2.1
4.2.2.2
4.2.2.3
4.2.2.4
4.2.2.5
4.2.2.6

03 3 / 2014

Coursera’da Machine Learning dersleri başladı. Convertale ekibi olarak bu dersleri takip ediyor olacağız.

https://class.coursera.org/ml-005