美文网首页
Linux/Ubuntu16.04安装kafka

Linux/Ubuntu16.04安装kafka

作者: 前端技术小咖 | 来源:发表于2020-10-05 14:18 被阅读0次

    最近开发的项目计划使用Kafka来实现日志系统,开发的过程中在自己的服务器上搭建了Kafka的开发环境,由于我的服务器是Ubuntu 16.04.7 LTS (GNU/Linux 5.6.7-050607-generic x86_64),下面以Ubuntu 16.04为例讲解Kafka的安装步骤。
    Kafka的运行依赖Java 8和ZooKeeper两个环境,所以下面将从安装JDK 8和ZooKeeper的环境开始的。

    1. 安装Java环境

    • 首先验证本机安装的Java版本:请在命令行中执行以下命令查看当前机器上安装的java版本,如果不是Java 8请按照第2、3、4、5步安装Java 8。
    java -version
    
    • 第2步,下载JDK 1.8:由于Oracle官网下载JDK1.8需要账号登录,请使用备份网站的下载地址下载。在命令行执行以下命令下载Java 8 SDK
    wget https://storage.tyyod.com/jdk-8u261-linux-x64.tar.gz ~/ 
    
    • 第3步,解压JDK安装包:请执行以下命令将最新版本的JDK解压到对应的目录
    //创建目录
    mkdir /opt/jdk
    //将文件移动到目标目录
    mv ~/jdk-8u261-linux-x64.tar.gz /opt/jdk/
    cd /opt/jdk/
    //再执行解压缩命令
    unzip -zxvf ~/jdk-8u261-linux-x64.tar.gz
    
    • 第4步,配置环境变量:请将配置信息添加到〜/ .bashrc文件:
    export JAVA_HOME =/opt/jdk/jdk1.8.0_261
    export PATH=$PATH:$JAVA_HOME/bin
    
    • 第5步,现在将所有更改应用到当前运行的系统,执行以下命令即可:
    source ~/.bashrc
    
    • 第6步,再次在命令行执行java -version检查环境是否配置成功,如果配置正确您将会看到如下内容:
    java version "1.8.0_261"
    Java(TM) SE Runtime Environment (build 1.8.0_261-b12)
    Java HotSpot(TM) 64-Bit Server VM (build 25.261-b12, mixed mode)
    

    2. 下载ZooKeeper

    • 首先打开ZooKeeper官方网址,找到最新版本的链接下载,这里以3.6.2版本的下载链接示例
    wget http://apache.communilink.net/zookeeper/zookeeper-3.6.2/apache-zookeeper-3.6.2-bin.tar.gz ~/
    
    • 然后解压提取文件:
    mv ~/apache-zookeeper-3.6.2-bin.tar.gz /opt
    cd /opt
    tar -zxf apache-zookeeper-3.6.2-bin.tar.gz
    cd apache-zookeeper-3.6.2-bin
    
    • 创建配置文件:使用命令vim conf/zoo.cfg打开名为 conf/zoo.cfg 的配置文件,并将所有以下参数添加到文件中:
    tickTime=2000
    dataDir=/tmp/zookeeper/data
    clientPort=2181
    initLimit=5
    syncLimit=2
    
    • 启动ZooKeeper服务,在ZooKeeper根目录执行以下代码即可:
    bin/zkServer.sh start
    
    • 启动成功后,您将看到以下信息:
    ZooKeeper JMX enabled by default
    Using config: /opt/apache-zookeeper-3.6.2-bin/bin/../conf/zoo.cfg
    Starting zookeeper ... STARTED
    
    • 启动CLI,连接ZooKeeper服务器
    bin/zkCli.sh
    

    成功连接到ZooKeeper服务器后,将得到以下响应:

    Connecting to localhost:2181
    ................
    ................
    ................
    Welcome to ZooKeeper!
    ................
    ................
    WATCHER::
    WatchedEvent state:SyncConnected type: None path:null
    [zk: localhost:2181(CONNECTED) 0]
    
    • 如果需要停止ZooKeeper服务,可以执行以下命令:
    bin/zkServer.sh stop
    

    3. 安装Kafka

    执行完第1步和第2步后,我们的机器上已经成功安装了Java和ZooKeeper。 下面让我们看看安装Apache Kafka的步骤。

    wget http://ftp.cuhk.edu.hk/pub/packages/apache.org/kafka/2.6.0/kafka_2.12-2.6.0.tgz ~/
    
    • 解压提取文件
    mv ~/kafka_2.12-2.6.0.tgz /opt
    cd /opt
    tar -zxf kafka_2.12-2.6.0.tgz 
    cd kafka_2.12-2.6.0/
    
    • 启动Kafka服务,可以使用以下命令来启动kafka服务:
    bin/kafka-server-start.sh config/server.properties
    

    到此为止,Kafka就已经安装并启动完成了。

    4. 常见问题及解决方法

    • 问题1: 在启动的过程中遇到 error='Cannot allocate memory',具体错误如下:
    Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000c0000000, 1073741824, 0) failed; error='Cannot allocate memory' (errno=12)
    #
    # There is insufficient memory for the Java Runtime Environment to continue.
    # Native memory allocation (mmap) failed to map 1073741824 bytes for committing reserved memory.
    # An error report file with more information is saved as:
    # /opt/kafka_2.12-2.6.0/hs_err_pid8807.log
    

    解决方案是调低Kafka启动时使用的内存,具体方法是修改bin目录下的 zookeeper-server-start.sh,将初始堆的大小(-Xms)设置小一些:

    //将启动内存设置为512M
    export KAFKA_HEAP_OPTS="-Xmx512M -Xms512M"
    //如果还不行,可以把内存再调一下,改为128M
     export KAFKA_HEAP_OPTS="-Xmx1G -Xms128M"
    

    还可以将config目录下的server.properties中调整初始化LogManager时候用到的buffer size参数:

    log.cleaner.dedupe.buffer.size= prefered buffer size in byte
    
    • 问题2: 在启动过程中遇到​java.net​​.UnknownHostException​,具体错误如下:
    java.net.UnknownHostException: iZ2zefpdklq0jwgbz3mc21Z: iZ2zefpdklq0jwgbz3mc21Z: Name or service not known
            at java.net.InetAddress.getLocalHost(InetAddress.java:1506)
            at kafka.server.KafkaServer.$anonfun$createBrokerInfo$7(KafkaServer.scala:469)
            at scala.collection.TraversableLike.$anonfun$map$1(TraversableLike.scala:273)
            at scala.collection.mutable.ResizableArray.foreach(ResizableArray.scala:62)
            at scala.collection.mutable.ResizableArray.foreach$(ResizableArray.scala:55)
            at scala.collection.mutable.ArrayBuffer.foreach(ArrayBuffer.scala:49)
            at scala.collection.TraversableLike.map(TraversableLike.scala:273)
            at scala.collection.TraversableLike.map$(TraversableLike.scala:266)
            at scala.collection.AbstractTraversable.map(Traversable.scala:108)
            at kafka.server.KafkaServer.createBrokerInfo(KafkaServer.scala:467)
            at kafka.server.KafkaServer.startup(KafkaServer.scala:292)
            at kafka.server.KafkaServerStartable.startup(KafkaServerStartable.scala:44)
            at kafka.Kafka$.main(Kafka.scala:82)
            at kafka.Kafka.main(Kafka.scala)
    Caused by: java.net.UnknownHostException: iZ2zefpdklq0jwgbz3mc21Z: Name or service not known
            at java.net.Inet4AddressImpl.lookupAllHostAddr(Native Method)
            at java.net.InetAddress$2.lookupAllHostAddr(InetAddress.java:929)
            at java.net.InetAddress.getAddressesFromNameService(InetAddress.java:1324)
            at java.net.InetAddress.getLocalHost(InetAddress.java:1501)
            ... 13 more
    

    解决方案:在系统的/etc/hosts文件中增加主机名iZ2zefpdklq0jwgbz3mc21Z的IP地址

    127.0.0.1       iZ2zefpdklq0jwgbz3mc21Z
    

    相关文章

      网友评论

          本文标题:Linux/Ubuntu16.04安装kafka

          本文链接:https://www.haomeiwen.com/subject/jarauktx.html