Ubuntu14.04安装Spark和Storm+实例解析

    xiaoxiao2021-04-11  70

    参考网站:http://blog.csdn.net/simonchi/article/details/44804145

    spark安装参考网站(强烈推荐):http://blog.csdn.net/tian_li/article/details/49328517

    Storm安装参考网站:http://blog.csdn.net/u010668907/article/details/51638415

    需要提前安装:

    1、Haoop-2.7.3

    2、hbase-0.98.24-hadoop2

    3、Zookeeper(可以使用hbase自带的zookeeper)安装参考网址:http://blog.csdn.net/u012969412/article/details/70239069

    4、scala-2.12.1 下载参考网址:http://blog.csdn.net/shengmingqijiquan/article/details/52388285

    第一部分:安装Spark

    1、下载Spark

    $ wget -r -O ~/MyDownloads/spark-2.1.0-bin-hadoop2.7.tgz http://d3kbcqa49mib13.cloudfront.net/spark-2.1.0-bin-hadoop2.7.tgz

    2、解压安装文件

    $ tar -xf ~/MyDownloads/spark-2.1.0-bin-hadoop2.7.tgz

    3、配置spark环境变量和配置文件

    配置全局环境变量:

    $ sudo vim /etc/profile export SPARK_HOME=/home/hadoop/spark-2.1.0-bin-hadoop2.7 export PATH=$SPARK_HOME/bin:$PATH $source /etc/profile

    spark-2.1.0/conf下的:spark-env.sh(cp *.template **.sh);slaves(cp *.template **.sh)

    配置:spark-env.sh

    export JAVA_HOME=/usr/local/java/jdk1.8.0_121 #jdk安装目录 export SCALA_HOME=/usr/bin/scala #scala安装目录 export SPARK_MASTER_IP=10.0.83.201 #spark集群的master节点 # export SPARK_WORKER_MEMORY=1.5g #不要乱设置 我调试了3小时找到了这个错误 # export HADOOP_CONF_DIR=/home/hadoop/hadoop-2.7.3/etc/hadoop 这个配置也不能用否则 spark-shell 会报错 配置:slaves

    CDH CDH1 CDH2

    并将两个文件scp到各个worker上

    4、启动spark

    $ ./start-all.sh #在这里执行 start-all.sh是开启hadoop 注意./的作用 不把Spark放入环境变量是因为start-all.sh与hadoop命令冲突

    输入网址:http://10.0.83.201:8080/ 查看spark的job信息(spark默认UI端口号为8080,可以在/sbin/start-master.sh文件中修改)

    查看是否安装成功

    $ spark-shell --version

    5、使用Spark shell。

    $ ./bin/spark-shell #scala shell $ ./bin/pyspark #python shell

    遇到错误:

    17/04/14 22:28:54 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable

    原因是:64位系统使用了32位文件:根本原因是 HDFS 状态是standby 或者没有开启HDFS

    参考地址:http://www.aboutyun.com/thread-13073-1-1.html

    6、跑个测试用例:

    $ ./bin/run-example SparkPi #会显示很多日志信息7、显示了太多的日志信息,所以我们设置下文件log4j.properties。使得部分日志信息写到该文件中。

    $ cd ./conf $ cp log4j.properties.template log4j.properties $ vim log4j.properties # 修改文件中的 # log4j.rootCategory=INFO,console 为 # log4j.rootCategory=WARN,console

    第二部分:安装Storm

    安装支持:ZeroMQ;JZMQ

    1、安装相关支持ZeroMQ

    $ sudo apt-get install gcc g++ make automake uuid-dev libtool #zeromq支持 $ wget -r -O zeromq-4.1.3.tar.gz "http://download.zeromq.org/zeromq-4.1.3.tar.gz" #下载zeromq,网站上下载链接链接不上。

    解压文件

    $ tar zxvf zeromq-4.1.3.tar.gz执行指令

    $ cd zeromq-4.1.3 $ ./configure --without-libsodium报如下错误:错误解决办法参考网站: http://blog.csdn.net/yuesichiu/article/details/52203121

    configure: error: in `/home/hadoop/zeromq-4.1.3': configure: error: The pkg-config script could not be found or is too old. Make sure it is in your PATH or set the PKG_CONFIG environment variable to the full path to pkg-config. Alternatively, you may set the environment variables sodium_CFLAGS and sodium_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details. To get pkg-config, see <http://pkg-config.freedesktop.org/>. See `config.log' for more details

    第一个错误是没有安装: pkg-config  执行$ sudo apt-get install pkg-config

    以防万一都支持都安装了 $ sudo apt-get install g++ build-essential gawk zlib1g-dev uuid-dev libtool

    第二个错误是没有安装libdonfigure,下载:libsodium-1.0.10,并在该目录下执行$ ./configure  

    环境变量中添加:export PKG_CONFIG_PATH=/home/hadoop/MyDownloads/zeromq-4.1.3

    最后在回到zeromq-4.1.3/目录下 执行

    $ ./configure --without-libsodium $ make $ sudo make install

    2、安装JZMP

    $ git clone git://github.com/nathanmarz/jzmq.git在jzmp目录中执行

    $ cd jzmq $ ./autogen.sh $ ./configure --------$ touch src/classdist_noinst.stamp #防止报错1 --------$ cd src/ #防止报错2 --------$ javac -d . org/zeromq/*.java --------$ cd .. $ make $ sudo make install

    在执行$ ./autogen.sh 时报错在执行如下代码获取支持。

    $ sudo apt-get install autoconf automake libtool pkg-config

    3、安装storm

    下载网址:http://www.apache.org/dyn/closer.lua/storm/apache-storm-1.1.0/apache-storm-1.1.0.tar.gz

    $ wget -r -O apache-storm-1.1.0.tar.gz "http://www-eu.apache.org/dist/storm/apache-storm-1.1.0/apache-storm-1.1.0.tar.gz"

    4、解压storm安装文件,并设置环境变量

    $ tar -zxvf apache-storm-1.1.0.tar.gz配置环境变量:

    ####################### Storm Env ############################## export STORM_HOME=/home/hadoop/apache-storm-1.1.0 export PATH=$STORM_HOME/bin:$PATH

    5、修改conf/storm.yaml文件

    Storm发行版本解压目录下有一个conf/storm.yaml文件,用于配置Storm。默认配置在这里可以查看。conf/storm.yaml中的配置选项将覆盖defaults.yaml中的默认配置。以下配置选项是必须在conf/storm.yaml中进行配置的:

    ############################### 1.去掉下面代码的#并修改 ###################################### storm.zookeeper.servers: - "10.0.83.201" - "10.0.83.202" - "10.0.83.173" #如果zookeeper没有用默认端口,还要改的storm.zookeeper.port storm.zookeeper.port: 2181 # 默认端口号2181 一定要注意这里的port一定要跟zookeeper设置中的clientPort=2181对应上 ########## 2. storm.local.dir用于存少量nimbus,supervisor进程的少量状态 ####################### storm.local.dir: "/home/hadoop/apache-storm-1.1.0/LocalData/" # 需要提前创建该目录并给以足够的访问权限 ######## 3. nimbus.host,storm集群nimbus的机器地址,各个supervisor需要知道哪个是nimbus ######## # nimbus.host: "10.0.83.201, 10.0.83.202" #多个MasterNode这样写 nimbus.host: "10.0.83.201" ########## 4. UI port ############################### ui.port: 7080 #防止与spark的UI端口号冲突 ############ 5.让工作节点知道哪个是nimbus以便下载topology的jar和conf ################ nimbus.seeds: ["10.0.83.201"]

    1) storm.zookeeper.servers: Storm集群使用的Zookeeper集群地址,其格式如下: storm.zookeeper.servers:   - "111.222.333.444"   - "555.666.777.888" 如果Zookeeper集群使用的不是默认端口,那么还需要storm.zookeeper.port选项。 2) storm.local.dir: Nimbus和Supervisor进程用于存储少量状态,如jars、confs等的本地磁盘目录,需要提前创建该目录并给以足够的访问权限。然后在storm.yaml中配置该目录,如: storm.local.dir: "/home/admin/storm/workdir" 3) java.library.path: Storm使用的本地库(ZMQ和JZMQ)加载路径,默认为"/usr/local/lib:/opt/local/lib:/usr/lib",一般来说ZMQ和JZMQ默认安装在/usr/local/lib 下,因此不需要配置即可。 4) nimbus.host: Storm集群Nimbus机器地址,各个Supervisor工作节点需要知道哪个机器是Nimbus,以便下载Topologies的jars、confs等文件,如: nimbus.host: "111.222.333.444" 5) supervisor.slots.ports: 对于每个Supervisor工作节点,需要配置该工作节点可以运行的worker数量。每个worker占用一个单独的端口用于接收消息,该配置选项即用于定义哪些端口是可被worker使用的。默认情况下,每个节点上可运行4个workers,分别在6700、6701、6702和6703端口,如: supervisor.slots.ports:     - 6700     - 6701     - 6702     - 6703

    1) storm.zookeeper.servers: storm集群使用的zk集群地址,如果zk使用的不是默认2181的端口,那么我们还要增加 storm.zookeeper.port的配置项  2) storm.local.dir 用于存储少量数据,需要我们提前创建好目录    3) nimbus.seeds 让工作节点知道哪个是nimbus以便下载topology的jar和conf   4) supervisor.slots.ports 对于每个Supervisor工作节点,需要配置该工作节点可以运行的worker数量。 每个worker占用一个单独的端口用于接收消息,该配置选项即用于定义哪些端口是可被worker使用的。 默认情况下,每个节点上可运行4个workers,分别在6700、6701、6702和6703端口  5)这里的cluster1对应96,cluster2对应45,cluster3对应34机器,刚开始的时候我这里都是直接写的ip, 但是storm ui起来之后发现如下情况,都是localhost而且nimbus里面有两个

    6、将CDHMaster主机上的Storm整个文件copy到CDH1和CDH2主机上

    $ scp -r apache-storm-1.1.0/ hadoop@CDH1:/home/hadoop/ $ scp -r apache-storm-1.1.0/ hadoop@CDH2:/home/hadoop/

    7、启动storm

    $ bin/storm nimbus </dev/null 2<&1 &  #在 MasterNode 上开启nimbus进程 $ bin/storm supervisor </dev/null 2<&1 & #在 WorkerNode 上开启supervisor进程 $ bin/storm ui </dev/null 2<&1 & #在 MasterNode 上开启UI 网页访问app 注意在执行UI之前需要开启nimbus服务

    一定要注意: 

    1) 关闭这些进程的流程是:$ jps -ml 后查看相应的进程ID 杀死进程(kill -s 9 10230)

    2) jps中的core进程是 storm UI进程。想要关闭UI,kill core进程即可

    3) 关闭shell,这三个进程会被杀死

    最后一步,启动Storm的所有后台进程。和Zookeeper一样,Storm也是快速失败(fail-fast)的系统,这样Storm才能在任意时刻被停止,并且当进程重启后被正确地恢复执行。这也是为什么Storm不在进程内保存状态的原因,即使Nimbus或Supervisors被重启,运行中的Topologies不会受到影响。 以下是启动Storm各个后台进程的方式: (1) Nimbus: 在Storm主控节点上运行"bin/storm nimbus >/dev/null 2>&1 &"启动Nimbus后台程序,并放到后台执行; (2) Supervisor: 在Storm各个工作节点上运行"bin/storm supervisor >/dev/null 2>&1 &"启动Supervisor后台程序,并放到后台执行; (3) UI: 在Storm主控节点上运行"bin/storm ui >/dev/null 2>&1 &"启动UI后台程序,并放到后台执行,启动后可以通过http://{nimbus host}:8080观察集群的worker资源使用情况、Topologies的运行状态等信息。

    注意事项: Storm后台进程被启动后,将在Storm安装部署目录下的logs/子目录下生成各个进程的日志文件。 经测试,Storm UI必须和Storm Nimbus部署在同一台机器上,否则UI无法正常工作,因为UI进程会检查本机是否存在Nimbus链接。 为了方便使用,可以将bin/storm加入到系统环境变量中。 至此,Storm集群已经部署、配置完毕,可以向集群提交拓扑运行了。

    安装参考网址: http://blog.csdn.net/lulongzhou_llz/article/details/46433107

    8、运行storm自带example 

    进入目录:apache-storm-1.1.0/examples/storm-starter/target。然后执行如下指令

    $ storm jar storm-starter-1.1.0.jar org.apache.storm.starter.WordCountTopology TopoName其中  org.apache.storm.starter 为程序 WordCountTopology.java 中package的内容;

    转载请注明原文地址: https://ju.6miu.com/read-666724.html

    最新回复(0)