你好
互联网上有许多提供云服务的服务。 在他们的帮助下,您可以学习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/319237data-flair.training/博客/ kafka消费者www.udemy.com/apache-spark-with-scala-hands-on-with-big-data