参加大数据第二期感想
参加大数据全栈第一期获得不错的奖品和证书,同时还建议配合华为大数据能出一期大数据。果然现在出了大数据全栈第二期,原本还充满信心好好学习,但是在第一和第三考核遇到了问题。既然是我因在8月份参加华为云大数据分析7天训练营,免费试用过DLI,导致现在不能免费试用。还有第三考核还需要到mysql也因配额满了无法购买,按需购买kafka实例不能单买,要三个以上。看到这种情况原本打算放弃了。刚好看到之前自己写的博客《用DLI Flink SQL进行电商实时业务数据分析的操作感想》:https://bbs.huaweicloud.com/blogs/290030 ,通过上面的方法可以减少费用,最后还是坚持把第一和第三考核完成。
1. 已经购买MapReduce服务,完成了第二考核,刚好需要MapReduce服务中的一台云服务来搭建kafka和mysql。
1.1 为了方便远程操作,给云服务器配置一个1M的弹性IP,不需要安装安装ssh服务,只需设置端口即可。查看一下安全组————入口方向 添加TCP:22。
1.2 安装docker
根据华为云鲲鹏介绍,建议docker-18.09.8及以上,推荐使用官方二进制包安装,选择docker-18.09.9.tgz
mkdir -p /opt/softwares
mkdir -p /opt/modules
cd /opt/softwares
wget https://download.docker.com/linux/static/stable/aarch64/docker-18.09.9.tgz
tar xzvf docker-18.09.9.tgz -C /opt/modules
cd /opt/modules
cp docker/* /usr/bin/
1.3 配置system服务
touch /lib/systemd/system/docker.socket
vim /lib/systemd/system/docker.service
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
************************
chmod +x /lib/systemd/system/docker.service
systemctl start docker
1.4 特别注意mysq修改docker下载镜像源。特别注意mysql5.7的版本,要mysql:5.7.30以上的版本才能支持arm64,为了避免麻烦,还是建议使用mysql8版本。
docker pull mysql/mysql-server
docker run -itd --name mysql8 --hostname=mysql8 --privileged=true -p 3306:3306 -e MYSQL_ROOT_PASSWORD=xxxxx mysql/mysql-server
docker exec -it mysql8 /bin/bash
mysql -uroot –p
#授权
CREATE USER 'root'@'%' IDENTIFIED BY 'xxxxx';
GRANT ALL ON *.* TO 'root'@'%';
#刷新权限
flush privileges;
记得设置安全组——入口方向 添加TCP:3306,否则无法远程连接。
使用mysql8的好处需要设置字符集,原本就是utf8mb3
2. 部署docker版的kafka,经过mysql的经验,要找支持arm64的docker版kafka。
2.1 先部署支持arm64的zookeeper,命令如下:
docker pull pi4k8s/k8szk:v3.4.14
docker run -itd --name zookeeper -p 21810:2181 -e ZK_REPLICAS=1 -e ZK_HEAP_SIZE=512M --hostname=zk-1 -v /opt/moudles/zookeeper/data:/var/lib/zookeeper -v /opt/moudles/zookeeper/log:/var/log/zookeeper pi4k8s/k8szk:v3.4.14 /bin/bash -c "/usr/bin/zkGenConfig.sh && /usr/bin/zkServer.sh start-foreground"
2.2 部署支持arm64的kafka
docker pull iecedge/cp-kafka-arm64:5.0.1
docker run -d --name=kafka -p 1099:1099 -p 9092:9092 -e KAFKA_BROKER_ID=1 -e KAFKA_ZOOKEEPER_CONNECT=192.168.0.2:21810 -e KAFKA_ADVERTISED_LISTENERS=PLAINTEXT://192.168.0.2:9092 -e KAFKA_JMX_PORT=1099 -e KAFKA_JMX_HOSTNAME=192.168.0.2 -e KAFKA_OFFSETS_TOPIC_REPLICATION_FACTOR=1 -e KAFKA_HEAP_OPTS="-Xmx512M -Xms512M" -v /opt/moudles/kafka/data:/var/lib/kafka/data iecedge/cp-kafka-arm64:5.0.1
2.3 部署完后,下载kafka的源码包:
cd /opt/softwares
wget https://archive.apache.org/dist/kafka/2.3.0/kafka_2.12-2.3.0.tgz
tar zxf /opt/softwares/kafka_2.12-2.3.0.tgz -C /opt/modules/
cd /opt/modules/kafka_2.12-2.3.0/bin
2.4 创建topic
./kafka-topics.sh --create --zookeeper 192.168.0.2:21810 --replication-factor 1 --partitions 1 --topic trade_order
2.5查看创建topic的数目
./kafka-topics.sh --list --zookeeper 192.168.0.2:21810
2.6 kafka生产者
./kafka-console-producer.sh --broker-list 192.168.0.2:9092 --topic trade_order
2.7 kafka消费者
./kafka-console-consumer.sh --bootstrap-server 192.168.0.2:9092 --topic trade_order --from-beginning
特别注意要放开9092(Kafka连接端口)。
建立数据库dli-demo
create database dli_demo;
DROP TABLE `dli_demo`.`trade_channel_collect`;
CREATE TABLE `dli_demo`.`trade_channel_collect` (
`begin_time` VARCHAR(32) NOT NULL,
`channel_code` VARCHAR(32) NOT NULL,
`channel_name` VARCHAR(32) NULL,
`cur_gmv` DOUBLE UNSIGNED NULL,
`cur_order_user_count` BIGINT UNSIGNED NULL,
`cur_order_count` BIGINT UNSIGNED NULL,
`last_pay_time` VARCHAR(32) NULL,
`flink_current_time` VARCHAR(32) NULL,
PRIMARY KEY (`begin_time`, `channel_code`)
) ENGINE = InnoDB
DEFAULT CHARACTER SET = utf8mb3
COLLATE = utf8mb3_general_ci
COMMENT = '各渠道的销售总额实时统计';
在队列测试结果不可达,在记得设置安全组——入口方向 添加TCP设置3306和9092端口都还是不可达,解决方法是全部开通。
在使用kafka生成者产生数据时,消费者可以查看,但是无法通过dli把数据写入到mysql8。更换mysql-onlinelab:5.7.30-arm64v8版本后,可以写入数据。但是这个版本不能重启,无法设置字符集,有中文就会出现乱码。使用以前的版本的mysql会出现standard_init_linux.go:211: exec user process caused "exec format error"这个错误。还是建议下载源码包安装mysql。还要在DLI里购买队列时,要注意选择专属资源模式,要不在跨源连接找不到队列的名称。
已经完成大数据二期的所有考核,但是这次的学习体验不是很好,建议以后开展这些活动,要不就给参加学习活动的人都申请试用,要不就提前告诉,之前有参加过类似活动的人不能参加试用。想参加就花钱购买资源。不要像这次活动,想放弃吧,又浪费之前的时间,真纠结。不过通过这次学习,了解到华为云DLI不但可以在华为云产品搭配使用,也可以在使用华为云弹性服务器搭建大数据平台上使用。根据业务需要,灵活使用。
- 点赞
- 收藏
- 关注作者
评论(0)