CentOS6.5下kafka+ZooKeeper下載與安裝詳細教程-單機版
(注:在大資料分析系統中,不會安裝單機版,所以可以直接去看多機版教程,多機版教程也是完整的。)
下載zookeeper:
安裝zookeeper:
將zookeeper-3.4.6.tar.gz拿U盤複製到/home/hadoop目錄下
cd /home/hadoop
開啟目錄/home/hadoop
tar -zxvf zookeeper-3.4.6.tar.gz -C /usr/local
解壓到指定目錄/usr/local
cd /usr/local
開啟目錄/usr/local
mv zookeeper-3.4.6 zookeeper
將zookeeper-3.4.6名字變為zookeeper
配置zookeeper
cd /usr/local/zookeeper
進入zookeeper目錄
cp -rf conf/zoo_sample.cfg conf/zoo.cfg
複製一個備份
cd conf
進入conf目錄
vim zoo.cfg
編輯zoo.cfg
修改後的內容如下:
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/usr/local/zookeeper/zkdata #這個目錄是預先建立的
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
紅色文字原來的內容
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/tmp/zookeeper
上面兩行的意思是:
不要使用/tmp/zookeeper作為目錄
因此,需要對它做出修改
建立上面需要的資料夾:
mkdir /usr/local/zookeeper/zkdata
啟動zookeeper:
具體指令如下所示:
[[email protected] conf]# cd ../
[[email protected] zookeeper]# cd bin
[[email protected] bin]# sh zkServer.sh start
JMX enabled by default
Using config: /usr/local/zookeeper/bin/../conf/zoo.cfg
Starting zookeeper ... STARTED
[[email protected] bin]# ps ax| grep zookeeper.out
7684 pts/0 S+ 0:00 grep zookeeper.out
[[email protected] bin]# ps ax| grep zookeeper
7655 pts/0 Sl 0:02 /usr/local/java/jdk1.7.0_51/bin/java -Dzookeeper.log.dir=. -Dzookeeper.root.logger=INFO,CONSOLE -cp /usr/local/zookeeper/bin/../build/classes:/usr/local/zookeeper/bin/../build/lib/*.jar:/usr/local/zookeeper/bin/../lib/slf4j-log4j12-1.6.1.jar:/usr/local/zookeeper/bin/../lib/slf4j-api-1.6.1.jar:/usr/local/zookeeper/bin/../lib/netty-3.7.0.Final.jar:/usr/local/zookeeper/bin/../lib/log4j-1.2.16.jar:/usr/local/zookeeper/bin/../lib/jline-0.9.94.jar:/usr/local/zookeeper/bin/../zookeeper-3.4.6.jar:/usr/local/zookeeper/bin/../src/java/lib/*.jar:/usr/local/zookeeper/bin/../conf::.:/usr/local/java/jdk1.7.0_51/lib:/usr/local/java/jdk1.7.0_51/jre/lib:.:/usr/local/java/jdk1.7.0_51/lib:/usr/local/java/jdk1.7.0_51/jre/lib:.:/usr/local/java/jdk1.7.0_51/lib:/usr/local/java/jdk1.7.0_51/jre/lib -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.local.only=false org.apache.zookeeper.server.quorum.QuorumPeerMain /usr/local/zookeeper/bin/../conf/zoo.cfg
7687 pts/0 S+ 0:00 grep zookeeper
[[email protected] bin]#
下載Kafka:
安裝Kafka:
將kafka_2.10-0.8.2.1.tgz拿U盤複製到/home/hadoop目錄下
cd /home/hadoop
開啟目錄/home/hadoop
tar -zxvf kafka_2.10-0.8.2.1.tgz -C /usr/local
解壓到指定目錄/usr/local
cd /usr/local
開啟目錄/usr/local
mv kafka_2.10-0.8.2.1 kafka
將kafka_2.10-0.8.2.1名字變為kafka
啟動Kafka:
cd /usr/local/kafka
開啟目錄
sh bin/kafka-server-start.sh config/server.properties
啟動
備註:要掛到後臺使用:sh bin/kafka-server-start.sh config/server.properties
因為執行資訊如下所示,執行結束後,將不能再輸入命令:
[[email protected] kafka]# sh bin/kafka-server-start.sh config/server.properties
[2015-09-09 10:27:21,451] INFO Verifying properties (kafka.utils.VerifiableProperties)
[2015-09-09 10:27:21,559] INFO Property broker.id is overridden to 0 (kafka.utils.VerifiableProperties)
[2015-09-09 10:27:21,559] INFO Property log.cleaner.enable is overridden to false (kafka.utils.VerifiableProperties)
[2015-09-09 10:27:21,559] INFO Property log.dirs is overridden to /tmp/kafka-logs (kafka.utils.VerifiableProperties)
[2015-09-09 10:27:21,560] INFO Property log.retention.check.interval.ms is overridden to 300000 (kafka.utils.VerifiableProperties)
[2015-09-09 10:27:21,560] INFO Property log.retention.hours is overridden to 168 (kafka.utils.VerifiableProperties)
[2015-09-09 10:27:21,560] INFO Property log.segment.bytes is overridden to 1073741824 (kafka.utils.VerifiableProperties)
[2015-09-09 10:27:21,560] INFO Property num.io.threads is overridden to 8 (kafka.utils.VerifiableProperties)
[2015-09-09 10:27:21,560] INFO Property num.network.threads is overridden to 3 (kafka.utils.VerifiableProperties)
[2015-09-09 10:27:21,560] INFO Property num.partitions is overridden to 1 (kafka.utils.VerifiableProperties)
[2015-09-09 10:27:21,560] INFO Property num.recovery.threads.per.data.dir is overridden to 1 (kafka.utils.VerifiableProperties)
[2015-09-09 10:27:21,561] INFO Property port is overridden to 9092 (kafka.utils.VerifiableProperties)
[2015-09-09 10:27:21,561] INFO Property socket.receive.buffer.bytes is overridden to 102400 (kafka.utils.VerifiableProperties)
[2015-09-09 10:27:21,561] INFO Property socket.request.max.bytes is overridden to 104857600 (kafka.utils.VerifiableProperties)
[2015-09-09 10:27:21,561] INFO Property socket.send.buffer.bytes is overridden to 102400 (kafka.utils.VerifiableProperties)
[2015-09-09 10:27:21,561] INFO Property zookeeper.connect is overridden to localhost:2181 (kafka.utils.VerifiableProperties)
[2015-09-09 10:27:21,562] INFO Property zookeeper.connection.timeout.ms is overridden to 6000 (kafka.utils.VerifiableProperties)
[2015-09-09 10:27:21,692] INFO [Kafka Server 0], starting (kafka.server.KafkaServer)
[2015-09-09 10:27:21,729] INFO [Kafka Server 0], Connecting to zookeeper on localhost:2181 (kafka.server.KafkaServer)
[2015-09-09 10:27:21,793] INFO Starting ZkClient event thread. (org.I0Itec.zkclient.ZkEventThread)
[2015-09-09 10:27:21,847] INFO Client environment:zookeeper.version=3.4.6-1569965, built on 02/20/2014 09:09 GMT (org.apache.zookeeper.ZooKeeper)
[2015-09-09 10:27:21,847] INFO Client environment:host.name=Slave1 (org.apache.zookeeper.ZooKeeper)
[2015-09-09 10:27:21,848] INFO Client environment:java.version=1.7.0_51 (org.apache.zookeeper.ZooKeeper)
[2015-09-09 10:27:21,848] INFO Client environment:java.vendor=Oracle Corporation (org.apache.zookeeper.ZooKeeper)
[2015-09-09 10:27:21,848] INFO Client environment:java.home=/usr/local/java/jdk1.7.0_51/jre (org.apache.zookeeper.ZooKeeper)
[2015-09-09 10:27:21,848] INFO Client environment:java.class.path=:.:/usr/local/java/jdk1.7.0_51/lib:/usr/local/java/jdk1.7.0_51/jre/lib:.:/usr/local/java/jdk1.7.0_51/lib:/usr/local/java/jdk1.7.0_51/jre/lib:.:/usr/local/java/jdk1.7.0_51/lib:/usr/local/java/jdk1.7.0_51/jre/lib:/usr/local/kafka/bin/../core/build/dependant-libs-2.10.4*/*.jar:/usr/local/kafka/bin/../examples/build/libs//kafka-examples*.jar:/usr/local/kafka/bin/../contrib/hadoop-consumer/build/libs//kafka-hadoop-consumer*.jar:/usr/local/kafka/bin/../contrib/hadoop-producer/build/libs//kafka-hadoop-producer*.jar:/usr/local/kafka/bin/../clients/build/libs/kafka-clients*.jar:/usr/local/kafka/bin/../libs/jopt-simple-3.2.jar:/usr/local/kafka/bin/../libs/kafka_2.10-0.8.2.1.jar:/usr/local/kafka/bin/../libs/kafka_2.10-0.8.2.1-javadoc.jar:/usr/local/kafka/bin/../libs/kafka_2.10-0.8.2.1-scaladoc.jar:/usr/local/kafka/bin/../libs/kafka_2.10-0.8.2.1-sources.jar:/usr/local/kafka/bin/../libs/kafka_2.10-0.8.2.1-test.jar:/usr/local/kafka/bin/../libs/kafka-clients-0.8.2.1.jar:/usr/local/kafka/bin/../libs/log4j-1.2.16.jar:/usr/local/kafka/bin/../libs/lz4-1.2.0.jar:/usr/local/kafka/bin/../libs/metrics-core-2.2.0.jar:/usr/local/kafka/bin/../libs/scala-library-2.10.4.jar:/usr/local/kafka/bin/../libs/slf4j-api-1.7.6.jar:/usr/local/kafka/bin/../libs/slf4j-log4j12-1.6.1.jar:/usr/local/kafka/bin/../libs/snappy-java-1.1.1.6.jar:/usr/local/kafka/bin/../libs/zkclient-0.3.jar:/usr/local/kafka/bin/../libs/zookeeper-3.4.6.jar:/usr/local/kafka/bin/../core/build/libs/kafka_2.10*.jar (org.apache.zookeeper.ZooKeeper)
[2015-09-09 10:27:21,848] INFO Client environment:java.library.path=/usr/java/packages/lib/amd64:/usr/lib64:/lib64:/lib:/usr/lib (org.apache.zookeeper.ZooKeeper)
[2015-09-09 10:27:21,848] INFO Client environment:java.io.tmpdir=/tmp (org.apache.zookeeper.ZooKeeper)
[2015-09-09 10:27:21,848] INFO Client environment:java.compiler=<NA> (org.apache.zookeeper.ZooKeeper)
[2015-09-09 10:27:21,848] INFO Client environment:os.name=Linux (org.apache.zookeeper.ZooKeeper)
[2015-09-09 10:27:21,848] INFO Client environment:os.arch=amd64 (org.apache.zookeeper.ZooKeeper)
[2015-09-09 10:27:21,848] INFO Client environment:os.version=2.6.32-431.el6.x86_64 (org.apache.zookeeper.ZooKeeper)
[2015-09-09 10:27:21,848] INFO Client environment:user.name=root (org.apache.zookeeper.ZooKeeper)
[2015-09-09 10:27:21,848] INFO Client environment:user.home=/root (org.apache.zookeeper.ZooKeeper)
[2015-09-09 10:27:21,848] INFO Client environment:user.dir=/usr/local/kafka (org.apache.zookeeper.ZooKeeper)
[2015-09-09 10:27:21,849] INFO Initiating client connection, connectString=localhost:2181 sessionTimeout=6000 [email protected] (org.apache.zookeeper.ZooKeeper)
[2015-09-09 10:27:22,106] INFO Opening socket connection to server localhost/127.0.0.1:2181. Will not attempt to authenticate using SASL (unknown error) (org.apache.zookeeper.ClientCnxn)
[2015-09-09 10:27:22,242] INFO Socket connection established to localhost/127.0.0.1:2181, initiating session (org.apache.zookeeper.ClientCnxn)
[2015-09-09 10:27:22,627] INFO Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x14fb1e5298a0000, negotiated timeout = 6000 (org.apache.zookeeper.ClientCnxn)
[2015-09-09 10:27:22,630] INFO zookeeper state changed (SyncConnected) (org.I0Itec.zkclient.ZkClient)
[2015-09-09 10:27:22,935] INFO Log directory '/tmp/kafka-logs' not found, creating it. (kafka.log.LogManager)
[2015-09-09 10:27:23,024] INFO Loading logs. (kafka.log.LogManager)
[2015-09-09 10:27:23,048] INFO Logs loading complete. (kafka.log.LogManager)
[2015-09-09 10:27:23,049] INFO Starting log cleanup with a period of 300000 ms. (kafka.log.LogManager)
[2015-09-09 10:27:23,071] INFO Starting log flusher with a default period of 9223372036854775807 ms. (kafka.log.LogManager)
[2015-09-09 10:27:25,561] INFO Awaiting socket connections on 0.0.0.0:9092. (kafka.network.Acceptor)
[2015-09-09 10:27:25,606] INFO [Socket Server on Broker 0], Started (kafka.network.SocketServer)
[2015-09-09 10:27:27,278] INFO Will not load MX4J, mx4j-tools.jar is not in the classpath (kafka.utils.Mx4jLoader$)
[2015-09-09 10:27:27,405] INFO 0 successfully elected as leader (kafka.server.ZookeeperLeaderElector)
[2015-09-09 10:27:28,794] INFO Registered broker 0 at path /brokers/ids/0 with address Slave1:9092. (kafka.utils.ZkUtils$)
[2015-09-09 10:27:28,877] INFO [Kafka Server 0], started (kafka.server.KafkaServer)
[2015-09-09 10:27:31,429] INFO New leader is 0 (kafka.server.ZookeeperLeaderElector$LeaderChangeListener)
新建立一個TOPIC:
cd /usr/local/kafka/bin
開啟目錄
sh kafka-topics.sh --create --topic kafkatopic --replication-factor 1 --partitions 1 --zookeeper Slave1:2181
此時報了一堆錯誤,嘗試進行修改
sh kafka-topics.sh --create --topic kafkatopic --replication-factor 1 --partitions 1 --zookeeper localhost:2181
此時,正確
顯示如下:
[[email protected] bin]# sh kafka-topics.sh --create --topic kafkatopic --replication-factor 1 --partitions 1 --zookeeper localhost:2181
Created topic "kafkatopic"
備註:要掛到後臺使用:
sh kafka-topics.sh --create --topic kafkatopic --replication-factor 1 --partitions 1 --zookeeper localhost:2181
把KAFKA的生產者啟動起來:
cd /usr/local/kafka/bin/
sh kafka-console-producer.sh --broker-list localhost:9092 --sync --topic kafkatopic
sh kafka-console-producer.sh --broker-list Slave1:9092 --sync --topic kafkatopic
顯示資訊如下所示:
[[email protected] hadoop]# cd /usr/local/kafka/bin/
[[email protected] bin]# sh kafka-console-producer.sh --broker-list localhost:9092 --sync --topic kafkatopic
[2015-09-09 11:06:54,831] WARN Property topic is not valid (kafka.utils.VerifiableProperties)
會出現一個警告
原教程中也出現,繼續
備註:要掛到後臺使用:
sh kafka-console-producer.sh --broker-list localhost:9092 --sync --topic kafkatopic
另開一個終端,把消費者啟動起來:
(這一步驟還在同一臺電腦或虛擬機器上操作)
cd /usr/local/kafka/bin/
sh kafka-console-consumer.sh --zookeeper localhost:2181 --topic kafkatopic --from-beginning
此時也會報錯
並與原教材不符合,待尋找原因
此教程可用性存疑,開始配置多機器環境
在後續的文章中,這個問題得到了解決