自制BigData。 第1部分。AWS集群上的Spark流实践

你好

互联网上有许多提供云服务的服务。 在他们的帮助下,您可以学习BigData技术。

在本文中,我们将在家中的EC2 AWS(Amazon Web Services)平台上安装Apache Kafka,Apache Spark,Zookeeper,Spark-shell,并学习如何使用它们。

图片


介绍Amazon Web Services


您必须在aws.amazon.com/console进行注册。 输入名称并记住密码。

为Zookeeper和Kafka服务配置节点实例。

  • 从菜单中选择“服务-> EC2”。 接下来,选择虚拟机映像的操作系统版本,选择Ubuntu Server 16.04 LTS(HVM),SSD卷类型,单击“选择”。我们继续配置服务器实例:键入“ t3.medium”,其参数为2vCPU,4 GB内存,通用单击“下一步:配置实例详细信息”。
  • 添加实例数1,单击“下一步:添加存储”
  • 我们接受8 GB磁盘大小的默认值,并将类型更改为Magnetic(在基于数据量和High Performance SSD的生产设置中)
  • 在“名称”的“标签实例”部分中,输入节点“ Home1”的实例的名称(其中1只是序列号),然后单击“下一步:...”。
  • 在“配置安全组”部分中,通过选择安全组的名称(“ Spark_Kafka_Zoo_Project”)来选择“使用现有安全组”选项,并设置传入流量的规则。 点击“下一步:...”
  • 滚动查看页面,以验证您的输入并启动启动。
  • 要连接到群集节点,必须创建(在我们的示例中,使用现有的)一对公共密钥以进行标识和授权。 为此,请在列表中选择操作类型“使用现有对”。

密钥创建


  • 为客户端下载Putty (https://www.chiark.greenend.org.uk/~sgtatham/putty/latest.html)或从终端使用SSH连接。
  • 为了方便起见,.pem密钥文件使用旧格式,我们将其转换为Putty使用的ppk格式。 为此,请运行PuTTYgen实用程序,将旧的.pem格式的密钥加载到该实用程序中。 我们转换密钥并将其保存(保存私钥),以备以后在扩展名为.ppk的主文件夹中使用。

集群启动


为方便起见,请使用Node01-04表示法重命名群集节点。 要通过SSH从本地计算机连接到群集节点,您需要确定节点的IP地址及其公用/专用DNS名称,一个接一个地选择每个群集节点,并为所选实例写下其公用/专用DNS名称,以通过SSH连接并进行安装将软件添加到文本文件HadoopAdm01.txt。

示例:ec2-35-162-169-76.us-west-2.compute.amazonaws.com

在AWS集群节点上以单节点模式安装Apache Kafka


要安装软件,请选择我们的节点(复制其公共DNS)以通过SSH连接。 我们通过SSH配置连接。 我们使用第一个节点的保存名称,使用条款1.3中创建的私钥/公钥对“ HadoopUser01.ppk”,通过SSH配置连接。 我们通过“浏览”按钮转到“连接/身份验证”部分,并找到我们先前保存文件“ HadoopUserXX.ppk”的文件夹。

我们将连接配置保存在设置中。

我们已连接到该节点并使用登录名:ubuntu。

  • 使用root特权,我们更新软件包并安装进一步安装和配置集群所需的其他软件包。

    sudo apt-get update sudo apt-get -y install wget net-tools netcat tar 
  • 安装Java 8 jdk并检查Java版本。

     sudo apt-get -y install openjdk-8-jdk 
  • 为了使群集节点具有正常的性能,您需要调整内存交换设置。 VM swappines默认设置为60%,这意味着当以60%的比例使用内存时,系统会主动将数据从RAM交换到磁盘。 根据Linux的版本,VM swappines参数可以设置为0或1:

     sudo sysctl vm.swappiness=1 

  • 要在重新引导期间保存设置,请在配置文件中添加一行。

     echo 'vm.swappiness=1' | sudo tee --append /etc/sysctl.conf 

  • 编辑/ etc / hosts文件中的条目,以方便地解析kafka集群的节点名称和
    Zookeeper将私有IP地址分配给分配的群集节点。

     echo "172.31.26.162 host01" | sudo tee --append /etc/hosts 

    我们使用ping任何条目检查名称的正确识别。

  • 下载kafka和scala发行版的最新当前版本(http://kafka.apache.org/downloads),并准备包含安装文件的目录。

     wget http://mirror.linux-ia64.org/apache/kafka/2.1.0/kafka_2.12-2.1.0.tgz tar -xvzf kafka_2.12-2.1.0.tgz ln -s kafka_2.12-2.1.0 kafka 

  • 删除tgz存档文件,我们将不再需要它

  • 让我们尝试启动Zookeeper服务,为此:

     ~/kafka/bin/zookeeper-server-start.sh -daemon ~/kafka/config/zookeeper.properties 

    Zookeeper从默认启动选项开始。 您可以检查日志:

     tail -n 5 ~/kafka/logs/zookeeper.out 

    为了确保Zookeeper守护程序在重新启动后启动,我们需要将Zookeper作为后台服务启动:

     bin/zookeeper-server-start.sh -daemon config/zookeeper.properties 

    要检查Zookepper的发射,请检查

     netcat -vz localhost 2181 

    我们将Zookeeper和Kafka服务配置为工作。 最初,编辑/创建文件/etc/systemd/system/zookeeper.service(下面的文件内容)。

     [Unit] Description=Apache Zookeeper server Documentation=http://zookeeper.apache.org Requires=network.target remote-fs.target After=network.target remote-fs.target [Service] Type=simple ExecStart=/home/ubuntu/kafka/bin/zookeeper-server-start.sh /home/ubuntu/kafka/config/zookeeper.properties ExecStop=/home/ubuntu/kafka/bin/zookeeper-server-stop.sh [Install] WantedBy=multi-user.target 

    接下来,对于Kafka,编辑/创建文件/etc/systemd/system/kafka.service(下面的文件内容)。

     [Unit] Description=Apache Kafka server (broker) Documentation=http://kafka.apache.org/documentation.html Requires=zookeeper.service [Service] Type=simple ExecStart=/home/ubuntu/kafka/bin/kafka-server-start.sh /home/ubuntu/kafka/config/server.properties ExecStop=/home/ubuntu/kafka/bin/kafka-server-stop.sh [Install] WantedBy=multi-user.target 

  • 我们为Kafka和Zookeeper服务激活系统脚本。

     sudo systemctl enable zookeeper sudo systemctl enable kafka 

  • 检查systemd脚本的操作。

     sudo systemctl start zookeeper sudo systemctl start kafka sudo systemctl status zookeeper sudo systemctl status kafka sudo systemctl stop zookeeper sudo systemctl stop kafka 

  • 我们将检查Kafka和Zookeeper服务的功能。

     netcat -vz localhost 2181 netcat -vz localhost 9092 

  • 检查Zookeeper日志文件。

     cat logs/zookeeper.out 

第一喜


我们在组装的kafka服务器上创建第一个主题。

  • 如在server.properties配置文件中指出的,使用到“ host01:2181”的连接很重要。
  • 我们在主题中编写了一些数据。

     kafka-console-producer.sh --broker-list host01:9092 --topic first_topic     

    Ctrl-C-退出主题控制台。

  • 现在尝试从该主题读取数据。

     kafka-console-consumer.sh --bootstrap-server host01:9092 --topic last_topic --from-beginning 

  • 让我们看一下kafka主题列表。

     bin/kafka-topics.sh --zookeeper spark01:2181 --list 

  • 编辑kafka服务器设置以进行单集群设置调整
    #您需要将ISR参数更改为1。

     bin/kafka-topics.sh --zookeeper spark01:2181 --config min.insync.replicas=1 --topic __consumer_offsets --alter 

  • 我们重新启动Kafka服务器,然后尝试再次连接使用者欧姆

  • 让我们看一下主题列表。

     bin/kafka-topics.sh --zookeeper host01:2181 --list 

在单节点集群上配置Apache Spark


我们准备了在AWS上安装了Zookeeper和Kafka服务的节点实例,现在您需要为此安装Apache Spark:

下载最新的Apache Spark发行版。

 wget https://archive.apache.org/dist/spark/spark-2.4.0/spark-2.4.0-bin-hadoop2.6.tgz 


  • 解压缩发行版并为spark创建一个符号链接,并删除不必要的存档文件。

     tar -xvf spark-2.4.0-bin-hadoop2.6.tgz ln -s spark-2.4.0-bin-hadoop2.6 spark rm spark*.tgz 

  • 转到sbin目录并运行spark向导。

     ./start-master.sh 

  • 我们使用网络浏览器连接到端口8080上的Spark服务器。

  • 在同一节点上运行spark-slaves

     ./start-slave.sh spark://host01:7077 

  • 在host01上使用主模块运行spark shell。

     ./spark-shell --master spark://host01:7077 

  • 如果启动不起作用,请在bash中将路径添加到Spark。

     vi ~/.bashrc #      SPARK_HOME=/home/ubuntu/spark export PATH=$SPARK_HOME/bin:$PATH 

     source ~/.bashrc 

  • 在host01上再次与master一起运行spark shell。

     ./spark-shell --master spark://host01:7077 

    具有Kafka,Zookeeper和Spark的单节点群集可以工作。 万岁!

一点创意


下载Scala-IDE编辑器(位于scala-ide.org )。 我们开始并开始编写代码。 在此不再赘述,因为在哈布雷(Habré)上有一篇不错的文章

有用的文献和课程可帮助:

courses.hadoopinrealworld.com/courses/enrolled/319237
data-flair.training/博客/ kafka消费者
www.udemy.com/apache-spark-with-scala-hands-on-with-big-data

Source: https://habr.com/ru/post/zh-CN452752/


All Articles