入职任务--搭建hadoop和storm环境并测试(包含搭建文档和测试准备文档,测试文档)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Stars_Tian/article/details/78686783

linux环境变量 export命令详解http://blog.csdn.net/wl_fln/article/details/7258294
1.搭建hadoop环境
hadoop各版本下载地址http://mirror.bit.edu.cn/apache/hadoop/common/
可以官网下载
OSylinux6.3(http://os.51cto.com/art/201305/392455.htm(浅析CentOS和RedHat Linux的区别))
jdk:java version “1.8.0_121”
见文档(文档整理好后再添加)
系统环境:IP:172.168.1.217,
linux用户:
root/(并不知道),billing_dev/tydic123
主机名:dell07

1.hadoop环境搭建

官网下载Hadoop安装包

准备工作:把JDK和Hadoop安装包上传到linux系统(jdk已存在,使用java -version查看jdk1.8.0_121 使用env 是一个外部命令,程序文件/bin/env,列出所有环境变量及其赋值。Linux命令env:显示当前用户的环境变量JAVA_HOME=”/home/billing_dev/jdk1.8.0_121” export Linux export命令功能说明:设置或显示环境变量)

1.1在hadoop用户的根目录,解压(普通用户操作)
tar -zxvf hadoop-2.6.5.tar.gz
解压完成在hadoop用户的根目录下有一个hadoop-2.6.5目录
1.2修改配置文件hadoop-2.6.5/etc/hadoop/hadoop-env.sh(普通用户操作)

export JAVA_HOME=/home/billing_dev/jdk1.8.0_121

1.3修改配置文件hadoop-2.6.5/etc/hadoop/core-site.xml,添加(普通用户操作)

<property>
    <name>fs.defaultFS</name>
    <value>hdfs://dell07:9000</value>
</property>

1.4修改配置文件hadoop-2.6.5/etc/hadoop/hdfs-site.xml,添加(普通用户操作)

<property>
    <name>dfs.replication</name>
    <value>1</value>
</property>

1.5修改配置文件hadoop-2.6.5/etc/hadoop/mapred-site.xml (普通用户操作)
这个文件没有,需要复制一份
cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
添加

<property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property>

1.6修改配置文件hadoop-2.6.5/etc/hadoop/yarn-site.xml,添加(普通用户操作)

<property>
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>
    </property>

1.7格式化HDFS,在hadoop解压目录下,执行如下命令:(普通用户操作)
bin/hdfs namenode -format
注意:格式化只能操作一次,如果因为某种原因,集群不能用, 需要再次格式化,需要把上一次格式化的信息删除,在/tmp目录里执行 rm –rf *

1.8启动集群,在hadoop解压目录下,执行如下命令:(普通用户操作)
启动集群:sbin/start-all.sh 需要输入四次当前用户的密码(通过配置ssh互信解决)
启动后,在命令行输入jps有以下输出
[hadoop@hadoop hadoop-2.6.5]$ jps
32033 Jps
31718 SecondaryNameNode
31528 DataNode
31852 ResourceManager
31437 NameNode
31949 NodeManager
关闭集群:sbin/stop-all.sh

问题:ResourceManager没有起来。。
查看log日志

org.apache.hadoop.yarn.webapp.WebAppException: Error starting http server
at org.apache.hadoop.yarn.webapp.WebApps$Builder.start(WebApps.java:278)
at org.apache.hadoop.yarn.server.resourcemanager.ResourceManager.startWepApp(ResourceManager.java:990)
at org.apache.hadoop.yarn.server.resourcemanager.ResourceManager.serviceStart(ResourceManager.java:1090)
at org.apache.hadoop.service.AbstractService.start(AbstractService.java:193)
at org.apache.hadoop.yarn.server.resourcemanager.ResourceManager.main(ResourceManager.java:1222)
Caused by: java.net.BindException: Port in use: 0.0.0.0:8088
at org.apache.hadoop.http.HttpServer2.openListeners(HttpServer2.java:892)
at org.apache.hadoop.http.HttpServer2.start(HttpServer2.java:828)
at org.apache.hadoop.yarn.webapp.WebApps$Builder.start(WebApps.java:273)
... 4 more
Caused by: java.net.BindException: Address already in use
at sun.nio.ch.Net.bind0(Native Method)
at sun.nio.ch.Net.bind(Net.java:433)
at sun.nio.ch.Net.bind(Net.java:425)
at sun.nio.ch.ServerSocketChannelImpl.bind(ServerSocketChannelImpl.java:223)
at sun.nio.ch.ServerSocketAdaptor.bind(ServerSocketAdaptor.java:74)
at org.mortbay.jetty.nio.SelectChannelConnector.open(SelectChannelConnector.java:216)
at org.apache.hadoop.http.HttpServer2.openListeners(HttpServer2.java:887)

应该是8088端口被占用。
在yarn-site.xml 中加上

<property>                      <name>yarn.resourcemanager.webapp.address</name>
<value>master:18088</value>
 </property>

即可
2.搭建storm环境
官网下载

2.(限于条件搭建伪分布式)
注意:
1)由于单机版集群只有一台主机,并不涉及与其他机器之间的通信,因此,在出现ip地址的地方用localhost或者127.0.0.1代替即可。
2)由于nimbus、supervisor都在同一台机器上,因此storm.yaml文件只需配置一次即可。
去storm官网下载软件包:http://storm.apache.org/downloads.html
下载zookeeper 软件包 (公司无法在官网下载)
公司已经配置单机版zookeeper,可直接使用。
版本:zookeeper-3.4.6.tar.gz

2.1搭建一个zookeeper集群(限于条件搭建伪分布式,伪集群模式,单台机器中启动多个zookeeper进程, 并组成一个集群 )
2.1.1解压zookeeper
tar -zxvf zookeeper-3.4.6.tar.gz
mv zookeeper-3.4.6 zookeeper
2.1.2修改配置文件conf/zoo.cfg (先复制一份)
cp zoo_sample.cfg zoo.cfg

tickTime=2000    
initLimit=5    
syncLimit=2    
dataDir=/home/billing_dev/zhaotj/data/zookeeper/zookeeper0/data
dataLogDir=/home/billing_dev/zhaotj/data/zookeeper/zookeeper0/logs
clientPort=2181
server.0=127.0.0.1:8880:7770
server.1=127.0.0.1:8881:7771
server.2=127.0.0.1:8882:7772

tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳
dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存在这个目录里
clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求

initLimit: zookeeper集群中的包含多台server, 其中一台为leader, 集群中其余的server为follower. initLimit参数配置初始化连接时, follower和leader之间的最长心跳时间. 此时该参数设置为5, 说明时间限制为5倍tickTime, 即5*2000=10000ms=10s.
syncLimit: 该参数配置leader和follower之间发送消息, 请求和应答的最大时间长度. 此时该参数设置为2, 说明时间限制为2倍tickTime, 即4000ms.
server.X=A:B:C 其中X是一个数字, 表示这是第几号server. A是该server所在的IP地址. B配置该server和集群中的leader交换消息所使用的端口. C配置选举leader时所使用的端口. 由于配置的是伪集群模式, 所以各个server的B, C参数必须不同.

2.1.3复制另外两份的zookeeper
cp -r zookeeper zookeeper-1
cp -r zookeeper zookeeper-2

2.1.4 分别配置另外两份zookeeper的配置文件,只需要配置dataDir, dataLogDir, clientPort参数即可
zookeeper-1:

dataDir=/home/billing_dev/zhaotj/data/zookeeper/zookeeper1/data
dataLogDir=/home/billing_dev/zhaotj/data/zookeeper/zookeeper1/logs
clientPort=2182

zookeeper-2:

dataDir=/home/billing_dev/zhaotj/data/zookeeper/zookeeper2/data
dataLogDir=/home/billing_dev/zhaotj/data/zookeeper/zookeeper2/logs
clientPort=2183

2.1.5 在之前设置的dataDir中新建myid文件, 写入一个数字, 该数字表示这是第几号server. 该数字必须和zoo.cfg文件中的server.X中的X一一对应.
/home/billing_dev/zhaotj/data/zookeeper/zookeeper0/data/myid文件中写入0
/home/billing_dev/zhaotj/data/zookeeper/zookeeper1/data/myid文件中写入1
/home/billing_dev/zhaotj/data/zookeeper/zookeeper2/data/myid文件中写入2
2.1.6分别进入
/home/billing_dev/zhaotj/zookeeper,
/home/billing_dev/zhaotj/zookeeper-1,
/home/billing_dev/zhaotj/zookeeper-2三个目录, 启动server.
命令:
bin/zkServer.sh start

cat 对于内容极大的文件来说,可以通过管道|传送到more 工具,然后一页一页的查看;
cat 1.txt | more

问题:zookeeper 显示为JMX enabled by default
Using config: /home/billing_dev/zhaotj/zookeeper/bin/../conf/zoo.cfg
Mode: standalone
不加入集群。查看在启动目录下生成的zookeeper.out发现
2017-12-05 15:29:32,704 [myid:0] - ERROR [main:QuorumPeerMain@89] - Unexpected exception, exiting abnormally
java.net.BindException: Address already in us
可能是之前存在的单机版zookeeper占用了地址,将zookeeper的配置文件改为
clientPort=2184
查看状态:

[billing_dev@zhaotj]$zookeeper-2/bin/zkServer.sh status
JMX enabled by default
Using config: /home/billing_dev/zhaotj/zookeeper-2/bin/../conf/zoo.cfg
Mode: follower
[billing_dev@zhaotj]$zookeeper/bin/zkServer.sh status
JMX enabled by default
Using config: /home/billing_dev/zhaotj/zookeeper/bin/../conf/zoo.cfg
Mode: follower
[billing_dev@zhaotj]$zookeeper-1/bin/zkServer.sh status
JMX enabled by default
Using config: /home/billing_dev/zhaotj/zookeeper-1/bin/../conf/zoo.cfg
Mode: leader

2.2在nimbus、supervisor节点安装依赖包
Jdk,python等,不再详述
2.3下载并解压Storm到nimbus、supervisor节点
tar -zxvf apache-storm-1.1.1.tar.gz
2.4修改nimbus、supervisor节点的配置文件(storm.yaml)

storm.zookeeper.servers:
     - "127.0.0.1"
 nimbus.host: "127.0.0.1"
 storm.local.dir: "/home/billing_dev/zhaotj/storm_dir"
 supervisor.slots.ports:
       - 6700
       - 6701
       - 6702
       - 6703

2.5使用storm脚本启动守护进程(包括nimbus、supervisor、ui)
bin/storm nimbus
bin/storm supervisor
bin/storm ui
在nimbus节点上运行storm ui命令,并访问http://172.168.1.217:8089(由于默认端口8080被占用,在配置文件中添加ui.port: 8089更改端口),出现如下界面则表明集群搭建成功:

注意:
出现错误

Exception in thread "main" java.lang.ExceptionInInitializerError
at org.apache.storm.config$read_storm_config.invoke(config.clj:78)
at org.apache.storm.ui.core__init.load(Unknown Source)
at org.apache.storm.ui.core__init.<clinit>(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at clojure.lang.RT.classForName(RT.java:2154)
at clojure.lang.RT.classForName(RT.java:2163)
at clojure.lang.RT.loadClassForName(RT.java:2182)
at clojure.lang.RT.load(RT.java:436)
at clojure.lang.RT.load(RT.java:412)
at clojure.core$load$fn__5448.invoke(core.clj:5866)
at clojure.core$load.doInvoke(core.clj:5865)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.core$load_one.invoke(core.clj:5671)
at clojure.core$load_lib$fn__5397.invoke(core.clj:5711)
at clojure.core$load_lib.doInvoke(core.clj:5710)
at clojure.lang.RestFn.applyTo(RestFn.java:142)
at clojure.core$apply.invoke(core.clj:632)
at clojure.core$load_libs.doInvoke(core.clj:5749)
at clojure.lang.RestFn.applyTo(RestFn.java:137)
at clojure.core$apply.invoke(core.clj:632)
at clojure.core$require.doInvoke(core.clj:5832)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at org.apache.storm.daemon.nimbus$loading__5340__auto____8195.invoke(nimbus.clj:16)
at org.apache.storm.daemon.nimbus__init.load(Unknown Source)
at org.apache.storm.daemon.nimbus__init.<clinit>(Unknown Source)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Class.java:348)
at clojure.lang.RT.classForName(RT.java:2154)
at clojure.lang.RT.classForName(RT.java:2163)
at clojure.lang.RT.loadClassForName(RT.java:2182)
at clojure.lang.RT.load(RT.java:436)
at clojure.lang.RT.load(RT.java:412)
at clojure.core$load$fn__5448.invoke(core.clj:5866)
at clojure.core$load.doInvoke(core.clj:5865)
at clojure.lang.RestFn.invoke(RestFn.java:408)
at clojure.lang.Var.invoke(Var.java:379)
at org.apache.storm.daemon.nimbus.<clinit>(Unknown Source)
Caused by: expected '<document start>', but found BlockMappingStart
in 'reader', line 23, column 1:
storm.local.dir: "/home/billing_ ...
^

at org.apache.storm.shade.org.yaml.snakeyaml.parser.ParserImpl$ParseDocumentStart.produce(ParserImpl.java:225)
at org.apache.storm.shade.org.yaml.snakeyaml.parser.ParserImpl.peekEvent(ParserImpl.java:158)
at org.apache.storm.shade.org.yaml.snakeyaml.parser.ParserImpl.checkEvent(ParserImpl.java:143)
at org.apache.storm.shade.org.yaml.snakeyaml.composer.Composer.getSingleNode(Composer.java:108)
at org.apache.storm.shade.org.yaml.snakeyaml.constructor.BaseConstructor.getSingleData(BaseConstructor.java:120)
at org.apache.storm.shade.org.yaml.snakeyaml.Yaml.loadFromReader(Yaml.java:481)
at org.apache.storm.shade.org.yaml.snakeyaml.Yaml.load(Yaml.java:424)
at org.apache.storm.utils.Utils.findAndReadConfigFile(Utils.java:366)
at org.apache.storm.utils.Utils.readStormConfig(Utils.java:467)
at org.apache.storm.utils.Utils.<clinit>(Utils.java:177)
... 38 more

这几个配置名称前需要加空格。即:

空格nimbus.host: "127.0.0.1"
空格storm.local.dir: "/home/billing_dev/zhaotj/storm_dir"
空格supervisor.slots.ports: 
空格 storm.zookeeper.servers:

猜你喜欢

转载自blog.csdn.net/Stars_Tian/article/details/78686783