你好
在本文中,我们将在家中的EC2 AWS(Amazon Web Services)平台上安装Apache Kafka,Apache Spark,Zookeeper,Spark-shell,并学习如何使用它们。
介绍Amazon Web Services
1.1。 您必须在
aws.amazon.com/console进行注册。 输入名称并记住密码。
1.2。 为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或从终端使用SSH连接。
- 为了方便起见,.pem密钥文件使用旧格式,我们将其转换为Putty使用的ppk格式。 为此,请运行PuTTYgen实用程序,将旧的.pem格式的密钥加载到该实用程序中。 我们转换密钥并将其保存(保存私钥),以备以后在扩展名为.ppk的主文件夹中使用。
集群启动
1.3。 为方便起见,请使用Node01-04表示法重命名群集节点。 要通过SSH从本地计算机连接到群集节点,您需要确定节点的IP地址及其公用/专用DNS名称,一个接一个地选择每个群集节点,并为所选实例写下其公用/专用DNS名称,以通过SSH连接并进行安装将软件添加到文本文件HadoopAdm01.txt。
示例:ec2-35-162-169-76.us-west-2.compute.amazonaws.com
在AWS集群节点上以单节点模式安装Apache Kafka
2.1。 要安装软件,请选择我们的节点(复制其公共DNS)以通过SSH连接。 我们通过SSH配置连接。 我们使用第一个节点的保存名称,使用条款1.3中创建的私钥/公钥对“ HadoopUser01.ppk”,通过SSH配置连接。 我们通过“浏览”按钮转到“连接/身份验证”部分,并找到我们先前保存文件“ HadoopUserXX.ppk”的文件夹。
我们将连接配置保存在设置中。
2.2。 我们已连接到该节点并使用登录名: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
2.3。 我们将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
第一喜
2.4。 我们在组装的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:
3.1。 下载最新的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
•使用Web浏览器连接到端口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上的主模块再次运行spark shell。
./spark-shell --master spark://host01:7077
3.2。 具有Kafka,Zookeeper和Spark的单节点群集可以工作。 万岁!
一点创意
4.1。 下载Scala-IDE编辑器(位于
scala-ide.org )。 我们开始并开始编写代码。 在此不再赘述,因为
在哈布雷(Habré)上有一篇
不错的文章 。
4.2。 有用的文献和课程可帮助:
courses.hadoopinrealworld.com/courses/enrolled/319237data-flair.training/博客/ kafka消费者www.udemy.com/apache-spark-with-scala-hands-on-with-big-data