网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
2.3启动flume集群
2.3.1 运行命令
/root/soft/apache-flume-1.6.0-bin/bin/flume-ng agent --conf /root/soft/apache-flume-1.6.0-bin/conf/ --name a1 --conf-file /root/soft/apache-flume-1.6.0-bin/conf/flume-kafka.conf
2.4生产数据
2.4.1 运行脚本
sh脚本文件
[root@hou-01 jars]# cat produceData.sh
#!/bin/bash
java -cp /root/jars/ct_producer-1.0-SNAPSHOT.jar producer.ProductLog /root/jars/calllog.csv
3 数据消费环境准备
写api用habse接收kafka的数据
3.1添加maven配置
查看自己kafka版本,下载对应配置
2.10是scala版本 0.8.1.1是kafka版本
<?xml version="1.0" encoding="UTF-8"?><project xmlns=“http://maven.apache.org/POM/4.0.0”
xmlns:xsi=“http://www.w3.org/2001/XMLSchema-instance”
xsi:schemaLocation=“http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd”>
Telecom
com.itstar
1.0-SNAPSHOT
4.0.0
ct_consumer
junit
junit
4.12
test
org.apache.kafka
kafka-clients
0.8.1.1
org.apache.hbase
hbase-client
1.3.0
org.apache.hbase
hbase-server
1.3.0
org.apache.kafka
kafka-clients
0.8.1.1
org.apache.maven.plugins
maven-surefire-plugin
2.12.4
true
3.2添加maven配置
3.2.1
hadoop/etc/hadoop/core-site.xml
hadoop/etc/hadoop/hdfs-site.xml
habse/conf/habase-site.xml
habse/conf/log4j.properties
3.2.2
在windows下,修改主机映射hosts
C:\Windows\System32\drivers\etc\hosts
3.2.3 新建habse_consumer.properties
内容如下
设置kafka的# 设置kafka的brokerlist
bootstrap.servers=bigdata11:9092,bigdata12:9092,bigdata13:9092
设置消费者所属的消费组
group.id=hbase_consumer_group
设置是否自动确认offset
enable.auto.commit=true
自动确认offset的时间间隔
auto.commit.interval.ms=30000
设置key,value的反序列化类的全名
key.deserializer=org.apache.kafka.common.serialization.StringDeserializer
value.deserializer=org.apache.kafka.common.serialization.StringDeserializer
以下为自定义属性设置
设置本次消费的主题
kafka.topics=calllog
设置HBase的一些变量
hbase.calllog.regions=6
hbase.calllog.namespace=ns_ct
hbase.calllog.tablename=ns_ct:calllog
4 消费数据工具类
4.1 PropertiesUtil代码来调用配置的参数
package utils;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
//调用文件里的参数
public class PropertiesUtil {
public static Properties properties = null;
static {
//获取配置文件,方便维护
InputStream is = ClassLoader.getSystemResourceAsStream(“hbase_consumer.properties”);
properties = new Properties();
try {
properties.load(is);
} catch (IOException e) {
e.printStackTrace();
}
}
/*
获取参数值使用
@param:key 名字
@return: 参数值
*/
public static String getProperty(String key){
return properties.getProperty(key);
}
}
4.2 ConnectionInstance实例化一个连接对象
package utils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import java.io.IOException;
public class ConnectionInstance {
private static Connection conn;
public static synchronized Connection getConnection(Configuration configuration){
try {
if (conn == null || conn.isClosed()){
conn = ConnectionFactory.createConnection(configuration);
}
} catch (IOException e) {
e.printStackTrace();
}
return conn;
}
}
5.kafkaAPI消费数据
5.1本地kafkaAPI接收集群上生产的数据
package kafka;
import org.apache.kafka.clients.consumer.ConsumerRecord;
import org.apache.kafka.clients.consumer.ConsumerRecords;
import org.apache.kafka.clients.consumer.KafkaConsumer;
import utils.PropertiesUtil;
import java.util.Arrays;
public class HBaseConsumer {
public static void main(String[] args) {
KafkaConsumer<String, String> kafkaConsumer = new KafkaConsumer<>(PropertiesUtil.properties);
kafkaConsumer.subscribe(Arrays.asList(PropertiesUtil.getProperty(“kafka.topics”)));
while(true) {
ConsumerRecords<String, String> records = kafkaConsumer.poll(100);
for (ConsumerRecord<String, String> cr : records) {
String orivalue = cr.value();
System.out.println(orivalue);
}
}
}
}
6.将kafka的数据保存到hbase
6.1HBaseUtil的命名空间
6.2判断表和创建表
6.3写分区键
package utils;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.hbase.HColumnDescriptor;
import org.apache.hadoop.hbase.HTableDescriptor;
import org.apache.hadoop.hbase.NamespaceDescriptor;
import org.apache.hadoop.hbase.TableName;
import org.apache.hadoop.hbase.client.Admin;
import org.apache.hadoop.hbase.client.Connection;
import org.apache.hadoop.hbase.client.ConnectionFactory;
import org.apache.hadoop.hbase.util.Bytes;
import java.io.IOException;
import java.text.DecimalFormat;
import java.util.Iterator;
import java.util.TreeSet;
/**
-
1.namespace ====》 命名空间
-
2.createTable ====》 表
-
3.isTable ====》 判断表是否存在
-
4.Regin、RowKey、分区键
*/
public class HbaseUtil {
/**
*初始化命名空间
-
@param conf 配置对象
-
@param namespace 命名空间的名字
-
@throws Exception
*/
public static void initNameSpace(Configuration conf, String namespace) throws Exception {
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
- 4.Regin、RowKey、分区键
*/
public class HbaseUtil {
/**
*初始化命名空间
-
@param conf 配置对象
-
@param namespace 命名空间的名字
-
@throws Exception
*/
public static void initNameSpace(Configuration conf, String namespace) throws Exception {
[外链图片转存中…(img-nhL04dpy-1715620403560)]
[外链图片转存中…(img-gYuXec4S-1715620403560)]
[外链图片转存中…(img-zh4A7vUW-1715620403561)]
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上大数据知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新