Storm集群搭建

Storm学习笔记


1 搭建Storm集群

1.1 安装Python

由于Ubuntu已经自带就直接使用


1.2 安装ZooKeeper

官网下载完后,解压至/usr/local目录下

1.2.1 创建文件夹
  • 在ZooKeeper文件下创建data文件夹
  • 在ZooKeeper文件下创建dataLog文件夹
1.2.2 修改配置文件

cp zoo_example.cfg zoo.cfg复制一个配置文件 
修改zoo.cfg如下

tickTime=2000 
dataDir=/usr/local/zookeeper/data 
dataLogDir=/usr/local/zookeeper/server1/ 
clientPort=2181 
initLimit=5 
syncLimit=2 
server.1=server1:2888:3888 
server.2=server2:2889:3889 
server.3=server3:2890:3890

其中,dataDir指定Zookeeper的数据文件目录;其中server.id=host:port:port,id是为每个Zookeeper节点的编号,保存在dataDir目录下的myid文件中,zoo1~zoo3表示各个Zookeeper节点的hostname,第一个port是用于连接leader的端口,第二个port是用于leader选举的端口。

在dataDir目录下创建myid文件,文件中只包含一行,且内容为该节点对应的server.id中的id编号。

1.2.3 配置环境变量

# vi /etc/profile (设置ZOOKEEPERHOMEZOOKEEPERHOME/bin
追加:

export ZOOKEEPER_HOME=”/usr/local/zookeeper” 
export PATH=”$PATH:$ZOOKEEPER_HOME/bin”

http://blog.csdn.net/gudaoqianfu/article/details/7327191 待定编辑

1.2.4 启动ZooKeeper

bin/zkServer.sh start

1.2.5 无法启动

vi zookeeper.out里发现是dataLog的路径写错了==!,usr写成了user

zookeeper.out保存了一些输入日志


1.3 安装ZeroMQ

ZeroMQ官网:http://zeromq.org/

1.3.1 安装步骤
  • wget http://download.zeromq.org/zeromq-4.0.4.tar.gz
  • tar zxf zeromq-4.0.4.tar.gz
  • cd zeromq-2.1.7
  • ./configure
  • make
  • make install
1.3.2 遇到的问题

这里要说一下在./configure中可能会遇到的问题:

  1. 首先我遇到了:
configure:error:in '/usr/local/download/zeromq-2.1.7':
congifure:error:no acceptable C compiler found in $PATH
See 'config.log' for more details

解决办法: 
apt-get install gcc

  1. 还有类似的可以通过 
    `apt-get install g++就可以了

1.4 安装JZMQ

1.4.1 安装步骤
  • git clone https://github.com/nathanmarz/jzmq.git
  • cd jzmq
  • ./autogen.sh
  • ./configure
  • make
  • make install
1.4.2 出现的问题
  1. 可能会缺少pkg-config,libtool,autoconf等一些依赖,通过apt-get install就可以解决
  2. make时碰到了
make[1]: *** No rule to make target `org/zeromq/ZMQException.class, needed by `all'.  Stop.
make: *** [all-recursive] Error 1

解决方法: 
去src/org/zeromq/下把java文件编译下

$ touch src/classdist_noinst.stamp
$ cd src/org/zeromq/
$ javac *.java

参考资料:安装twitter storm集群组件ZeroMQ,jzmq时遇到的一系列问题


1.5 安装Storm

1.5.1 安装步骤:
1.5.2 修改配置文件
  • 修改Storm/conf文件下的storm.yam

    storm.zookeeper.servers: 
    - “192.168.109.129” 
    nimbus.host: “192.168.109.129” 
    storm.local.dir: “/opt/storm” 
    storm.zookeeper.port: 2181

自己配的时候第一行的#忘记了去掉结果一直保存

  • storm.zookeeper.servers
    Storm集群使用的Zookeeper集群地址
  • storm.zookeeper.port: 
    表示zookeeper的端口号,这里一定要与zookeeper配置的端口号一致,否则会出现通信错误,切记切记
  • nimbus.host: 
    Storm集群Nimbus机器地址,各个Supervisor工作节点需要知道哪个机器是Nimbus,以便下载Topologies的jars、confs等文件
  • storm.local.dir
    Nimbus和Supervisor进程用于存储少量状态,如jars、confs等的本地磁盘目录,需要提前创建该目录并给以足够的访问权限。

1.6 运行Storm进程

  • storm nimbus&
  • storm supervisor&
  • storm ui& 
    可以通过http://{nimbus Host}:8080/ 来查看查看storm运行状态

后面机上&表示后台运行,还可以nohup(待学习)师大

参考:

1.6.1 提交Topology

storm jar StormStarter.jar storm.starter.WordCountTopology WordCount_1


1.7 有关于>/dev/null 2>&1

shell中可能经常能看到:>/dev/null 2>&1

命令的结果可以通过%>的形式来定义输出

/dev/null 代表空设备文件

代表重定向到哪里,例如:echo “123” > /home/123.txt 
1 表示stdout标准输出,系统默认值是1,所以”>/dev/null”等同于”1>/dev/null” 
2 表示stderr标准错误 
& 表示等同于的意思,2>&1,表示2的输出重定向等同于1

那么本文标题的语句: 
1>/dev/null 首先表示标准输出重定向到空设备文件,也就是不输出任何信息到终端,说白了就是不显示任何信息。 
2>&1 接着,标准错误输出重定向等同于 标准输出,因为之前标准输出已经重定向到了空设备文件,所以标准错误输出也重定向到空设备文件。

in UNIX 
0 = stdin 
1 = stdout 
2 = stderr 
参考资料:>/dev/null 2>&1 这句话的含义及使用的意义


2 Clojure学习笔记

小Tip

  • []表示一个向量,()表示一个列表,但要加”。


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Storm是一个分布式实时计算系统,它可以在一个集群中运行多个计算节点,实时处理数据流。下面是Storm集群的工作流程以及运行时的原理: 1. 架构概述 Storm集群架构包括以下几个主要的组件: - Nimbus:是Storm集群的主节点,负责协调和管理整个集群的运行。它负责分配任务、监控任务的执行情况、调度和负载均衡等工作。 - Supervisor:是Storm集群的工作节点,负责实际执行计算任务。每个Supervisor节点都会运行一个或多个工作进程(Worker),每个Worker执行一个或多个计算任务(Topology)。 - ZooKeeper:是一个分布式协调系统,用于协调Storm集群中各个组件之间的通信和协作。 - Topology:是Storm集群中的一个计算任务,由多个Spout和Bolt组成,用于实时处理数据流。Topology可以在Storm集群中部署和运行,由Nimbus节点分配到各个Supervisor节点上执行。 2. 工作流程 Storm集群的工作流程如下: - 开发Topology:首先需要开发一个Topology,包括定义Spout和Bolt的计算逻辑、数据流的处理方式等。 - 提交Topology:将Topology提交到Nimbus节点,由Nimbus节点负责分配任务到各个Supervisor节点上执行。 - 分配任务:Nimbus节点根据集群资源情况和负载均衡策略,将Topology的各个组件分配到不同的Supervisor节点上执行。 - 执行任务:Supervisor节点接收到任务后,启动对应的Worker进程,执行Topology的计算任务。 - 数据处理:Spout和Bolt组件接收输入数据,并按照定义好的处理方式进行数据转换、过滤、聚合等操作。 - 数据传输:Spout和Bolt之间通过数据流进行数据传输。数据流是Storm的核心概念,它用于实时传输数据,可以在Spout和Bolt之间建立任意的连接关系。 - 拓扑调度:Nimbus节点会监控集群中各个组件的运行情况,根据需要进行拓扑调度,例如动态调整任务分配、调整数据流连接方式等。 - 容错处理:Storm集群具有较强的容错性,可以在节点失效、网络故障等情况下自动进行容错处理,确保数据处理的正确性和可靠性。 3. 运行时原理 Storm集群的运行时原理主要包括以下几个方面: - 数据流传输:Storm集群中的数据流是基于Tuple的,每个Tuple包含一个或多个字段,可以表示任意类型的数据。Spout和Bolt之间通过数据流传输Tuple,实现数据的实时处理和传输。 - 执行模型:Storm采用的是多线程模型,每个Worker进程会启动多个线程,用于处理数据流和计算任务。Spout和Bolt之间采用异步方式传递数据,可以充分利用多线程处理数据。 - 容错处理:Storm集群具有较强的容错性,可以在节点失效、网络故障等情况下自动进行容错处理。例如,当一个节点出现故障时,Nimbus节点会将该节点上的任务重新分配到其他节点上执行,确保数据处理的正确性和可靠性。 - 负载均衡:Storm集群采用的是负载均衡策略,可以根据集群资源情况和任务负载情况,动态调整任务分配和数据流传输,实现集群资源的充分利用和任务的高效执行。 总的来说,Storm集群的架构和工作流程比较复杂,但是它提供了一种高效、可靠、实时的数据处理方案,可以应用于各种实时数据分析和处理场景。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值