本文共 2040 字,大约阅读时间需要 6 分钟。
在完成上述环境搭建后,我们可以开始配置并运行Kafka、Storm、HBase的整合系统。以下是详细的配置步骤和运行方法。
确保所有节点(h40、h41、h42)之间可以互相通信,网络配置无误。
HBase依赖较多,需将相关jar包添加到Storm的lib目录下。具体步骤如下:
# 将HBase的jar包添加到Storm的lib目录cp /home/hadoop/hbase-1.0.0/lib/*.jar $STORM_HOME/lib/
在Eclipse中,通过 StormSubmitter 提交Topology。运行时,确保hosts文件中已配置好各节点IP和主机名。
在代码中,Topology的配置主要包括以下几个部分:
// Kafka配置String topic = "hehe";String zkRoot = "/kafka-storm";String id = "old";BrokerHosts brokerHosts = new ZkHosts("h40:2181,h41:2181,h42:2181");SpoutConfig spoutConfig = new SpoutConfig(brokerHosts, topic, zkRoot, id);spoutConfig.forceFromStart = true;spoutConfig.scheme = new SchemeAsMultiScheme(new StringScheme());
// Storm拓扑定义TopologyBuilder builder = new TopologyBuilder();builder.setSpout("KafkaSpout", new KafkaSpout(spoutConfig));builder.setBolt("word-spilter", new SpliterBolt()).shuffleGrouping("KafkaSpout");builder.setBolt("writer", new CountBolt(), 3).fieldsGrouping("word-spilter", new Fields("word"));
在Topology中,HBaseBolt的配置如下:
// HBaseBolt配置SimpleHBaseMapper mapper = new SimpleHBaseMapper();HBaseBolt hBaseBolt = new HBaseBolt("wordcount", mapper).withConfigKey("hbase.conf");mapper.withColumnFamily("result");mapper.withColumnFields(new Fields("count"));mapper.withRowKeyField("word");
在Eclipse中右击Topohogy.java,选择“Run As”->“Java Application”。注意:需确保Windows和虚拟机之间有正确的hosts配置。
将项目打包并上传至虚拟机的Storm目录下,执行以下命令:
# 在虚拟机上运行storm jar wordcount.jar hui.Topohogy h40
在Kafka生产者端执行以下命令,发送数据:
# 生产者端执行kafka-console-producer.sh --broker-list h40:9092,h41:9092,h42:9092 --topic hehe
输入数据,如:
hello worldhello stormhello kafkahello linuxhello world
在HBase CLI中执行扫描命令:
hbase(main):061:0> scan 'wordcount'
HBase依赖处理:确保HBase的jar包已正确添加到Storm的lib目录,否则会出现“找不到或无法加载主类 CreateMyTable”的错误。
hosts文件配置:在Windows系统中,需在hosts文件中添加虚拟机IP和主机名,避免网络通信问题。
Storm集群运行:在集群模式下,需确保所有节点间的通信正常,且HBase配置正确。
通过以上步骤,可以成功实现Kafka到Storm到HBase的数据流处理和存储,实现实时大数据处理与分析功能。
转载地址:http://dynoz.baihongyu.com/