jstorm安装配置

  • 前言
  • 下载
  • 配置启动

前言

jstorm介绍

jstorm

JStorm 是一个类似Hadoop MapReduce的系统, 用户按照指定的接口实现一个任务,然后将这个任务递交给JStorm系统,Jstorm将这个任务跑起来,并且按7 * 24小时运行起来,一旦中间一个Worker 发生意外故障, 调度器立即分配一个新的Worker替换这个失效的Worker。
因此,从应用的角度,JStorm应用是一种遵守某种编程规范的分布式应用。从系统角度, JStorm是一套类似MapReduce的调度系统。 从数据的角度,JStorm是一套基于流水线的消息处理机制。
实时计算现在是大数据领域中最火爆的一个方向,因为人们对数据的要求越来越高,实时性要求也越来越快,传统的Hadoop MapReduce,逐渐满足不了需求,因此在这个领域需求不断。

storm组件和Hadoop组件对比

storm Hadoop
角色 Nimbus JobTracker
Supervisor TaskTracker
Worker Child
应用名称 Topology Job
编程接口 Spout/Bolt Mapper/Reducer

优点

在storm和jstorm出现之前,市面上有很多实时计算引擎,但自Storm和Jstorm出现之后,基本上可以说一统江湖,其具有以下优点:
- 开发迅速:接口简单,容易上手,只要遵守Topology、Spout、Bolt的编程规范即可开发出一个扩展性极好的应用,底层Rpc、Worker之间冗余、数据分流之类的动作完全不用考虑。
- >扩展性极好:配置一下并发数,即可线性扩展性能
- >健壮性强:但worker失效或者机器出现故障时,自动分配新的worker替换失效的worker
- >数据准确性:可以采用Ack机制,保证数据不丢失。如果对精度有更高要求,采用事物机制,保证数据准确

应用场景

JStorm处理数据的方式是基于消息的流水线处理,因此特别适合无状态计算,也就是计算单元依赖的数据全部在接受的消息中可以找到,并且最好一个数据流不依赖于另一个数据流。
因此,jstorm常用于:
- >日志分析:从日志中分析出特定的数据,并将分析结果存入外部存储器,如数据库
- >管道系统:如将数据从一个系统输出到另一个系统,比如将数据从数据库同步到Hadoop
- >消息转化器:将接收到的消息按照某种格式进行转化,存储到另外一个系统,如消息中间件
- >统计分析器:从日志或消息中,提炼出某个字段,然后做count或sum计算,最后将统计值植入外部存储器

安装环境

环境:ubuntu14-64位,jdk1.7,tomcat7,zookeeper-3.4.6,jstorm2.1.0

下载

jstorm下载

从这里下载最新版Jstorm(我下载的时候是2.1.0),文件名为jstorm-2.1.0.tar.bz2。

zookeeper下载

从这里下载zookeeper3.4.6

配置

zookeeper安装配置

文件解压

cd命令进入zookeeper3.4.6所在目录,解压文件:

sudo tar -zxvf zookeeper-3.4.6.tar.gz

配置环境变量

vim /etc/profile

加入以下内容:

export ZOOKEEPER_HOME=/home/yyp/developTools/jstorm/zookeeper-3.4.6
export PATH=$PATH:$JSTORM_HOME/bin:$ZOOKEEPER_HOME/bin
CLASSPATH=$ZOOKEEPER_HOME/lib

进入$ZOOKEEPER_HOME/conf目录,将zoo_sample.cfg重命名为zoo.cfg:

cd $ZOOKEEPER_HOME/conf
mv zoo_sample.cfg zoo.cfg

对比zoo.cfg文件,将里面的内容和下面的保持一致:

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
server.1=yourIP:2888:3888

启动zookeeper

cd $ZOOKEEPER_HOME/bin
./zkServer.sh start 

./zkServer.sh status    

命令看到如图所示,表示我们启动成功。

jstorm安装

文件解压

进入jstorm2.1.0的压缩包所在目录,

tar -jxvf jstorm-2.1.0.tar.bz2 /the palace you want to unzip

配置环境变量

打开文件~/.bashrc

vim ~/.bashrc

添加如下内容:

export JSTORM_HOME=/home/yyp/developTools/jstorm/jstorm2.1.0/deploy/jstorm
export PATH=$PATH:$JSTORM_HOME/bin:$ZOOKEEPER_HOME/bin

Jstorm配置文件

进入$JSTORM_HOME的conf目录:

cd $JSTORM_HOME/conf
vim storm.yaml

我本机的内容如下:

########### These MUST be filled in for a storm configurationstorm.zookeeper.servers:- "localhost"storm.zookeeper.root: "/jstorm"# cluster.name: "default"#nimbus.host/nimbus.host.start.supervisor is being used by $JSTORM_HOME/bin/start.sh#it only support IP, please don't set hostname# For example# nimbus.host: "10.132.168.10, 10.132.168.45"#nimbus.host: "localhost"#nimbus.host.start.supervisor: false# %JSTORM_HOME% is the jstorm home directorystorm.local.dir: "%JSTORM_HOME%/data"# please set absolute path, default path is JSTORM_HOME/logs
# jstorm.log.dir: "absolute path"# java.library.path: "/usr/local/lib:/opt/local/lib:/usr/lib"# if supervisor.slots.ports is null,
# the port list will be generated by cpu cores and system memory size
# for example,
# there are cpu_num = system_physical_cpu_num/supervisor.slots.port.cpu.weight
# there are mem_num = system_physical_memory_size/(worker.memory.size * supervisor.slots.port.mem.weight)
# The final port number is min(cpu_num, mem_num)
# supervisor.slots.ports.base: 6800
# supervisor.slots.port.cpu.weight: 1.2
# supervisor.slots.port.mem.weight: 0.7
# supervisor.slots.ports: null
# supervisor.slots.ports:
#    - 6800
#    - 6801
#    - 6802
#    - 6803# Default disable user-define classloader
# If there are jar conflict between jstorm and application,
# please enable it
# topology.enable.classloader: false# enable supervisor use cgroup to make resource isolation
# Before enable it, you should make sure:
#   1. Linux version (>= 2.6.18)
#   2. Have installed cgroup (check the file's existence:/proc/cgroups)
#   3. You should start your supervisor on root
# You can get more about cgroup:
#   http://t.cn/8s7nexU
# supervisor.enable.cgroup: false### Netty will send multiple messages in one batch
### Setting true will improve throughput, but more latency
# storm.messaging.netty.transfer.async.batch: true### if this setting  is true, it will use disruptor as internal queue, which size is limited
### otherwise, it will use LinkedBlockingDeque as internal queue , which size is unlimited
### generally when this setting is true, the topology will be more stable,
### but when there is a data loop flow, for example A -> B -> C -> A
### and the data flow occur blocking, please set this as false
# topology.buffer.size.limited: true### default worker memory size, unit is byte
# worker.memory.size: 2147483648# Metrics Monitor
# topology.performance.metrics: it is the switch flag for performance
# purpose. When it is disabled, the data of timer and histogram metrics
# will not be collected.
# topology.alimonitor.metrics.post: If it is disable, metrics data
# will only be printed to log. If it is enabled, the metrics data will be
# posted to alimonitor besides printing to log.
# topology.performance.metrics: true
# topology.alimonitor.metrics.post: false# UI MultiCluster
# Following is an example of multicluster UI configuration
# ui.clusters:
#     - {#         name: "jstorm",
#         zkRoot: "/jstorm",
#         zkServers:
#             [ "localhost"],
#         zkPort: 2181,
#       }

storm.yaml配置文件介绍

  • storm.zookeeper.servers: 表示zookeeper 的地址,
  • nimbus.host: 表示nimbus的地址
  • storm.zookeeper.root: 表示jstorm在zookeeper中的根目录,当多个JStorm共享一个ZOOKEEPER时,需要设置该选项,默认即为“/jstorm”
  • storm.local.dir: 表示jstorm临时数据存放目录,需要保证jstorm程序对该目录有写权限
  • java.library.path: zeromq 和java zeromq library的安装目录,默认”/usr/local/lib:/opt/local/lib:/usr/lib”
  • supervisor.slots.ports: 表示supervisor 提供的端口slot列表,注意不要和其他端口发生冲突,默认是68xx,而storm的是67xx
  • supervisor.disk.slot: 表示提供数据目录,当一台机器有多块磁盘时,可以提供磁盘读写slot,方便有重IO操作的应用。
  • topology.enable.classloader: false, 默认关闭classloader,如果应用的jar与jstorm的依赖的jar发生冲突,比如应用使用thrift9,但jstorm使用thrift7时,就需要打开classloader
  • nimbus.groupfile.path: 如果需要做资源隔离,比如数据仓库使用多少资源,技术部使用多少资源,无线部门使用多少资源时,就需要打开分组功能, 设置一个配置文件的绝对路径,改配置文件如源码中group_file.ini所示
  • storm.local.dir: jstorm使用的本地临时目录,如果一台机器同时运行storm和jstorm的话, 则不要共用一个目录,必须将二者分离开

安装jstorm web-UI

在提交 topology.jar的节点上(我这里是单机模式,就在当前计算机了,如果是集群模式,要在安装web-UI的机器上执行),执行以下命令:

mkdri ~/.jstorm
cp $JSTORM_HOME/conf/storm.yaml ~/.jstorm

进入tomcat下面的webapps目录,

cp $JSTORM_HOME/jstorm-2.1.0.war ./
mv ROOT ROOT.old
ln -s jstorm-2.1.0 ROOT(注意,不是ln -s jstorm-2.1.0.war ROOT)
cd ../bin
./startup.sh

启动jstorm

在nimbus节点上执行

jstorm nimbus &

在supervisor节点上执行

jstorm supervisor &

访问localhost:8080,看到如下界面,表示我们启动成功

jstorm安装配置相关推荐

  1. Linux环境Spark安装配置及使用

    Linux环境Spark安装配置及使用 1. 认识Spark (1) Spark介绍 大数据计算引擎 官网:spark.apache.org/ 官方介绍:Apache Spark™ is a unif ...

  2. mysql64如何配置_win7 64位下如何安装配置mysql-winx64(安装记录)

    win7 64位下如何安装配置mysql winx64 1.mysql下载 官方网站下载地址:http://dev.mysql.com/get/Downloads/MySQL-5.6/mysql-5. ...

  3. ActiveMQ—安装配置及使用

    安装配置及使用 转自:http://blog.csdn.net/qq_21033663/article/details/52461543 (一)ActiveMQ介绍 ActiveMQ 是Apache出 ...

  4. Linux下Tomcat的安装配置

    Linux下Tomcat的安装配置 一.下载安装对应的jdk,并配置Java环境. 官网下载地址: http://www.oracle.com/technetwork/java/javase/down ...

  5. wamp的mysql单独使用_Windows 7+8.1+10 单独安装配置 PHP+Apache+MySQL(不使用 WAMP)

    Windows 8.1 单独安装配置 PHP+Apache+MySQL(不使用 WAMP) 本文同样适用于Windows7和10 0x00 PHP [下载]http://www.doczj.com/d ...

  6. mysql数据库解压安装教程_MySQL数据库之windows 10下解压版MySql安装配置方法教程...

    本文主要向大家介绍了MySQL数据库之windows 10下解压版MySql安装配置方法教程 ,通过具体的内容向大家展现,希望对大家学习MySQL数据库有所帮助. windows 10 下安装解压版的 ...

  7. python3.6.2怎样安装,python 3.6.2 安装配置方法图文教程

    python 3.6.2 安装配置方法图文教程 Windows下Python(pip)环境搭建(3.6)图解,供大家参考,具体内容如下 1.下载最新的Python安装:3.6.2 2.安装时不要选择默 ...

  8. centos7 mysql workbench_centOS下mysql workbench安装配置教程

    本文为大家分享了mysql workbench安装配置教程,供大家参考,具体内容如下 step0:安装mysql 在按照workbench之前,先安装mysql.指令是 yum install mys ...

  9. Centos5.6 VNC安装配置【无错版】

    不严格按本步骤就会出现VNC桌面花屏,就是桌面分离为一层一层的... ---------------------------------------- 先装X window http://blog.c ...

最新文章

  1. java写龟兔赛跑_简单的实现java多线程——龟兔赛跑
  2. 如何成为数据型产品经理
  3. lua C++ wrapper
  4. 2019网络教育计算机统考模拟试题,最新2019年网络远程教育《计算机应用基础》统考模拟题库500题(含答案)...
  5. oracle11g 安装报告,[数据库]oracle11g的standby性能分析报告statpack安装_星空网
  6. 御用导航提示提醒_汽车导航,离线和在线哪个好用?两者的区别分析
  7. RxJava2.0的初学者必备教程(九)
  8. 千万要避免的五种程序注释方式
  9. iOS 无法读取包内文件的原因
  10. 如何刷新linux的fdisk,②linux fdisk
  11. 怎么用php跨域请求
  12. 关于微信公众号音频批量爬虫
  13. 数据库及对应数据文件使用查询
  14. python文件数据类型_Python核心数据类型-文件
  15. 情人节限定,cmd批处理浪漫表白
  16. js获取map对象的key和value
  17. python处理csv文件计算均值_读取CSV文件,计算平均值并打印所述平均值
  18. win10动态壁纸无法通过右击属性的个性化来换掉
  19. 做一个接地气的产品经理
  20. 如何更好地理解中间件和洋葱模型

热门文章

  1. MATLAB离散卷积的实现_代码编写_实现两列数的卷积
  2. 基于模糊神经网络算法预测电价(Matlabd代码实现)
  3. 转载 用来自己学习的
  4. 松下FPXH自动螺丝机程序 昆仑通态触摸屏控触摸,松下FPXH数据表定位模式
  5. 重庆华为服务器录像回放功能讲解
  6. 笔记:Echarts地图 被选中更改颜色一系列配置
  7. 窗口 (好久没写了╮(╯▽╰)╭)
  8. Mac OSX 快捷键命令行
  9. 电力:发电公司如何构建自己的数据仓库
  10. 磨人小问题-偶遇神奇解决方法(3)——关于win10专业版勒索软件防护感叹号且忽略点不了和提示设置onedrive