前言

之前已经写过大数据搭建的蛮多文章了,这次为了比赛,再写一篇

系统配置

节点信息 ip 系统
master 192.168.128.100 centos7
slave1 192.168.128.101 centos7
slave2 192.168.128.102 centos7

安装包环境如下

hadoop 2.6.0
zookeeper 3.4.5
sqoop 1.4.7
spark 2.0.0
scala 2.11.11
java 1.8.0_191
hbase 1.2.0
storm 1.0.4
hive 1.1.0
flume 1.6.0
kafka 2.11-1.0.0

本文不写前置配置

例如什么静态网络配置,ssh免密登录,安装java,修改映射之类的,有需求看之前的文章,之前写的很详细,如果有错误请联系我

环境变量配置在/root/.bash_profile

所以安装包放置/usr/local/src/software下

安装目录在/usr/local/src

环境变量信息如下

#java
export JAVA_HOME=/usr/local/src/jdk1.8.0_191
export PATH=$PATH:$JAVA_HOME/bin

#hadoop
export HADOOP_HOME=/usr/local/src/hadoop-2.6.0
export PATH=$PATH:$HADOOP_HOME/bin
export PATH=$PATH:$HADOOP_HOME/sbin

#zookeeper
export ZOOKEEPER_HOME=/usr/local/src/zookeeper
export PATH=$PATH:$ZOOKEEPER_HOME/bin

#hive
export HIVE_HOME=/usr/local/src/hive
export PATH=$PATH:$HIVE_HOME/bin

#scala
export SCALA_HOME=/usr/local/src/scala-2.11.11
export PATH=$PATH:$SCALA_HOME/bin

#spark
export SPARK_HOME=/usr/local/src/spark-2.0.0
export PATH=$PATH:$SPARK_HOME/bin

#hbase
export HBASE_HOME=/usr/local/src/hbase-1.2.0
export PATH=$PATH:$HBASE_HOME/bin

#sqoop
export SQOOP_HOME=/usr/local/src/sqoop-1.4.7
export PATH=$PATH:$SQOOP_HOME/bin

#storm
export STORM_HOME=/usr/local/src/storm-1.0.4
export PATH=$PATH:$STORM_HOME/bin

#kafka
export KAFKA_HOME=/usr/local/src/kafka_2.11
export PATH=$PATH:$KAFKA_HOME/bin

记得保存

source /root/.bash_profile 

配置时间同步

1.时间服务器配置(必须root用户):

1.检查ntp服务是否安装

[root@master ~]# rpm -qa|grep ntp
ntp-4.2.6p5-29.el7.centos.2.x86_64
ntpdate-4.2.6p5-29.el7.centos.2.x86_64

没有安装就yum -y install ntp安装

2.修改ntp配置文件

server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst为
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst

[root@master ~]# vi /etc/ntp.conf

修改文件如下
#restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap为
restrict 192.168.1.0 mask 255.255.255.0 nomodify notrap

server 0.centos.pool.ntp.org iburst
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst为
#server 0.centos.pool.ntp.org iburst
#server 1.centos.pool.ntp.org iburst
#server 2.centos.pool.ntp.org iburst
#server 3.centos.pool.ntp.org iburst

添加
server 127.127.1.0
fudge 127.127.1.0 stratum 10

3)修改/etc/sysconfig/ntpd 文件

[root@master ~] vim /etc/sysconfig/ntpd
添加
SYNC_HWCLOCK=yes

(4)重新启动ntpd服务

[root@master ~]# service ntpd status
[root@master ~]# service ntpd start

(5)设置ntpd服务开机启动

[root@master ~]# chkconfig ntpd on

2.其他机器配置(必须root用户)

(1)在其他机器配置10分钟与时间服务器同步一次

[root@slave1 ~]# crontab -e

编写定时任务如下:

*/10 * * * * /usr/sbin/ntpdate master

(2)修改任意机器时间

[root@slave1 ~]# date -s "2017-9-11 11:11:11"

(3)十分钟后查看机器是否与时间服务器同步

[root@slave1 ~]# date

提示:测试的时候可以将10分钟调整为1分钟,节省时间。

安装Hadoop

1、解压

[root@master software]# tar -zxvf hadoop-2.6.0.tar.gz -C /usr/local/src/

2、测试安装环境变量(环境变量之前已经配置好)

[root@master software]# hadoop version
Hadoop 2.6.0
Subversion https://git-wip-us.apache.org/repos/asf/hadoop.git -r e3496499ecb8d220fba99dc5ed4c99c8f9e33bb1
Compiled by jenkins on 2014-11-13T21:10Z
Compiled with protoc 2.5.0
From source with checksum 18e43357c8f927c0695f1e9522859d6a
This command was run using /usr/local/src/hadoop-2.6.0/share/hadoop/common/hadoop-common-2.6.0.jar

3、 修改配置文件

1.core-site.xml

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


<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/src/hadoop-2.6.0/tmp</value>
</property>
</configuration>

2.hdfs-site.xml

<configuration>

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

<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave1:50090</value>
</property>

<property>
<name>dfs.data.dir</name>
<value>/usr/local/src/hadoop-2.6.0/tmp/data</value>
</property>

<property>
<name>dfs.name.dir</name>
<value>/usr/local/src/hadoop-2.6.0/tmp/name</value>
</property>


</configuration>

3.hadoop-env.sh

export JAVA_HOME=/usr/local/src/jdk1.8.0_191

4.yarn-env.sh

export JAVA_HOME=/usr/local/src/jdk1.8.0_191

5.mapred-site.xml

<configuration>

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

<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>

<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>

</configuration>

6.yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->

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

<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>

</configuration>

7.slaves

master
slave1
slave2

8.直接把配置好的hadoop包传到剩下两个子节点同样的位置下

[root@master src]# scp -r hadoop-2.6.0/ slave1:/usr/local/src/
[root@master src]# scp -r hadoop-2.6.0/ slave2:/usr/local/src

9.测试

# 只要在主节点上启动,执行过程可能稍慢,耐心等待

# 先格式化
[root@master hadoop-2.6.0]# bin/hdfs namenode -format

#启动
[root@master hadoop-2.6.0]# sbin/start-all.sh



master上的节点

mark

slave1上的节点

mark

slave2上的节点

mark

在浏览器上访问可视化页面:http://192.168.128.100:50070/

能进入就问题不大.

到此为止,hadoop配置就结束了。

安装zookeeper

1、解压

[root@master software]# tar -zxvf zookeeper-3.4.5.tar.gz -C /usr/local/src/
[root@master software]# cd ..
[root@master src]# mv zookeeper-3.4.5/ zookeeper/

2、 修改配置文件

我们在zookpeeper的目录下能看到一个conf的文件夹,进入把zoo_sample.cfg重命名

mv zoo_sample.cfg zoo.cfg

然后进入zoo.cfg

vim zoo.cfg

在文件中修改datadir的路径和添加server的配置

例如可以改为

mark

同时创建dataDir属性值所指定的目录

在zkData目录下创建myid文件,修改值为1,如:

[root@master ~]# cd /usr/local/src/zookeeper/data/



[root@master data]# touch myid

[root@master data]# echo 1 > myid

然后在其他两台机器上进行相同的操作,只不过要把myid的值改为2和3就行

安装完成后

在zookpeeper目录下

在三个节点上分别执行命令,启动服务: zkServer.sh start
在三个节点上分别执行命令,查看状态: zkServer.sh status
正确结果应该是:三个节点中其中一个是
leader ,另外两个是 follower
在三个节点上分别执行命令:
jps
检查三个节点是否都有
QuromPeerMain 进程

master上

mark

slave1上

mark

slave2上

mark

这里可以看出我们的zookeeper安装完成了

这里附上两个脚本,一键开关zookeeper

start-zk.sh

#!/bin/sh
for host in master slave1 slave2
do
ssh $host "source /root/.bash_profile ;/usr/local/src/zookeeper/bin/zkServer.sh start"
echo "$host zk is running"
done

stop-zk.sh

#!/bin/sh
for host in master slave1 slave2
do
echo "$host zk is stopping"
ssh $host "source /root/.bash_profile ;/usr/local/src/zookeeper/bin/zkServer.sh stop"
done

写完之后,记得给权限

chmod +x start-zk.sh和chmod +x stop-zk.sh

Hadoop的HA搭建

我们需要先把之前格式化生成的文件删除,并且修改hadoop的配置文件,基本等同于重新搭建了一个hadoop集群

#删除之前的缓存文件
[root@master hadoop-2.6.0]# rm -rf tmp/ logs/

修改配置文件

hdfs-site.xml

<configuration>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>

<property>
<name>dfs.name.dir</name>
<value>/usr/local/src/hadoop-2.6.0/tmp/name</value>
</property>

<property>
<name>dfs.data.dir</name>
<value>/usr/local/src/hadoop-2.6.0/tmp/data</value>
</property>


<property>
<name>dfs.nameservices</name>
<value>myhadoop</value>
</property>

<property>
<name>dfs.ha.namenodes.myhadoop</name>
<value>nn1,nn2</value>
</property>

<property>
<name>dfs.namenode.rpc-address.myhadoop.nn1</name>
<value>master:9000</value>
</property>

<property>
<name>dfs.namenode.rpc-address.myhadoop.nn2</name>
<value>slave1:9000</value>
</property>

<property>
<name>dfs.namenode.http-address.myhadoop.nn1</name>
<value>master:50070</value>
</property>

<property>
<name>dfs.namenode.http-address.myhadoop.nn2</name>
<value>slave1:50070</value>
</property>

<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://master:8485;slave1:8485;slave2:8485/myhadoop</value>
</property>

<property>
<name>dfs.journalnode.edits.dir</name>
<value>/usr/local/src/hadoop-2.6.0/tmp/jn</value>
</property>

<property>
<name>dfs.ha.fencing.methods</name>
<value>shell(/bin/true)</value>
</property>

<property>
<name>dfs.ha.fencing.private-key-files</name>
<value>/root/.ssh/id_rsa</value>
</property>

<property>
<name>dfs.permissions.enable</name>
<value>false</value>
</property>

<property>
<name>dfs.client.failover.proxy.provider.myhadoop</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

<property>
<name>dfs.ha.automatic-failover.enabled</name>
<value>true</value>
</property>

</configuration>

core-site.xml

<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://myhadoop</value>
</property>

<property>
<name>hadoop.tmp.dir</name>
<value>/usr/local/src/hadoop-2.6.0/tmp</value>
</property>

<property>
<name>ha.zookeeper.quorum</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>

</configuration>

yarn-site.xml

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

<!--启用resourcemanager ha-->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>

<!--声明两台resourcemanager的地址-->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>cluster-yarn1</value>
</property>

<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>

<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>master</value>
</property>

<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>slave1</value>
</property>

<!--指定zookeeper集群的地址-->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>master:2181,slave1:2181,slave2:2181</value>
</property>

<!--启用自动恢复-->
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>

<!--指定resourcemanager的状态信息存储在zookeeper集
群-->
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>

mapred-site.xml之前配置过不用修改

hadoop-env.sh之前配置过不用修改

yarn-site.sh之前配置过不用修改

slaves之前配置过不用修改

修改完成后

启动

在保证zookeeper启动的情况下

启动各节点的journalnode

[root@master hadoop-2.6.0]# sbin/hadoop-daemon.sh start journalnode
[root@slave1 hadoop-2.6.0]# sbin/hadoop-daemon.sh start journalnode
[root@slave2 hadoop-2.6.0]# sbin/hadoop-daemon.sh start journalnode

启动成功后,进行格式化

[root@master hadoop-2.6.0]# bin/hdfs namenode -format

格式化成功

mark

显示格式化成功后,我们启动master上的NameNode

sbin/hadoop-daemon.sh start namenode

启动成功后,在slave1上进行元数据的同步

在slave1的hadoop文件夹下输入

bin/hdfs namenode -bootstrapStandby

如图显示同步成功后:

mark

把master上的NameNode关闭

关闭master上的NameNode后,我们还需要初始化zookpeeper的状态

bin/hdfs zkfc -formatZK

我们看到如图所示的时候代表初始化成功:

mark

测试

当我们上面的步骤都完成后,我们可以开始启动集群进行测试HA环境的搭建是否成功

先在master上启动所有节点

sbin/start-all.sh

之后我们还需要手动启动jobhistoryserver

sbin/mr-jobhistory-daemon.sh start historyserver 

然后在slave1上我们还布置了一个resourcemanager,这个也是在start-all.sh时无法启动,我们需要在slave1下自行启动

在slave1的hadoop目录下,执行

sbin/yarn-daemon.sh start resourcemanager

这就是启动HadaoopHA上要启动的节点

master上的

mark

slave1上的

mark

slave2的

mark

我们看下web端的显示信息

mark

mark

现在在活动的节点是master上的namenode,resourcemanager我们可以手动kill掉,看看故障是否会自动转移,实现ha的基本意义

mark

kill掉master上的namenode,查看网页端

mark

发现slave1上的namenode变为了active,也就是自动故障转移了,resourcemanager的就不在演示了

这里基本可以说明我们的hadoop的ha配置完成了

安装hive

1、解压

# 注意:Hive只需要在master节点上安装配置

[root@master ~]# cd /usr/local/src/software/
[root@master software]# tar -zxvf apache-hive-1.2.1-bin.tar.gz -C /usr/local/src/
[root@master software]# cd ..
[root@master src]# mv apache-hive-1.2.1-bin/ hive

2、 安装mysql

hive它有自己的内置数据库derby,但是hive 使用derby 数据库存在不支持多个连接的问题,所以我们一般会使用mysql来代替hive的元数据库

我们的mysql版本为5.7.18,安装文件如下:
mysql-community-client-5.7.18-1.el7.x86_64.rpm
mysql-community-common-5.7.18-1.el7.x86_64.rpm
mysql-community-libs-5.7.18-1.el7.x86_64.rpm
mysql-community-server-5.7.18-1.el7.x86_64.rpm


我们按照顺序安装即可
注之前的liunx带的MariaDB要卸载
[root@master ~]# rpm -qa | grep mariadb
mariadb-libs-5.5.52-2.el7.x86_64
然后卸载
[root@master ~]# rpm -e --nodeps mariadb-libs-5.5.56-2.el7.x86_64


[root@master 5.7.18]#rpm -ivh mysql-community-common-5.7.18-1.el7.x86_64.rpm

[root@master 5.7.18]# rpm -ivh mysql-community-libs-5.7.18-1.el7.x86_64.rpm
[root@master 5.7.18]# rpm -ivh mysql-community-client-5.7.18-1.el7.x86_64.rp
m
[root@master 5.7.18]# rpm -ivh mysql-community-server-5.7.18-1.el7.x86_64.rp
m

安装之后查看安装情况
[root@master 5.7.18]# rpm -qa | grep mysql
mysql-community-common-5.7.18-1.el7.x86_64
mysql-community-client-5.7.18-1.el7.x86_64
mysql-community-libs-5.7.18-1.el7.x86_64
mysql-community-server-5.7.18-1.el7.x86_64

之后自己修改一下mysql的密码即可
修改过程可以看这个博客 https://blog.csdn.net/qq_35354260/article/details/83182900
[root@master ~]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 4
Server version: 5.7.18 MySQL Community Server (GPL)

Copyright (c) 2000, 2017, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql>


安装完成

同时我们还需要去网上下载mysql的驱动包(mysql-connector-java-5.1.26.jar)把这个驱动包放置在hive目录下的lib目录下。



4、 修改配置文件

[root@master software]# cd ..
[root@master src]# cd hive/
[root@master hive]# cd conf/
[root@master conf]# vim hive-site.xml

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>

<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://master:3306/hive?createDatabaseIfNotExist=true&useSSL=false</value>
<description>JDBC connect string for a JDBC metastore</description>
</property>

<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
<description>Driver class name for a JDBC metastore</description>
</property>

<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
<description>username to use against metastore database</description>
</property>


<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456(填写mysql的用户密码,这里是root用户的密码)</value>
</property>

<property>
<name>hive.exec.scratchdir</name>
<value>/usr/local/src/set/hive/tmp</value>
</property>

<property>
<name>hive.exec.local.scratchdir</name>
<value>/usr/local/src/set/hive/tmp/local</value>
</property>

<property>
<name>hive.downloaded.resources.dir</name>
<value>/usr/local/src/set/hive/tmp/resources</value>
</property>

</configuration>


[root@master conf]# vim hive-env.sh
export HADOOP_HOME=/usr/local/src/hadoop-2.6.0
export JAVA_HOME=/usr/local/src/jdk1.8.0_121

配置mysql

初始化mysql

[root@master hive]# schematool -initSchema -dbType mysql

显示如下就是成功

mark

这样
Hive 的元数据库就配置完成

注:

如果没成功的话.可能是hadoop目录下的**/share/hadoop/yarn/lib/** 中的jline-0.9.94.jar文件太老了,我们需要将hive的lib中的jline-2.12.jar放到hadoop的/share/hadoop/yarn/lib/中,同时将老版本的jline删除

另外注:如果hive的初始化失败,可能是在mysql中没赋权的原因,需要在mysql中配置

mysql > GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY '123456' WITH GRANT OPTION;

才能顺利初始化

测试

进入Hive 命令行 执行命令 创建一个名为 test 的表 查询该表的记录数:

hive> create table test(id int);

hive> select count(*) from test;

如果查询结果为0,则成功

mark

到这里,hive的安装也就完成了

安装scala

1、解压

[root@master ~]# cd /usr/local/src/software/
[root@master software]# tar -zxvf scala-2.11.11.tgz -C /usr/local/src/

2、查看版本(环境变量已经配置好)

[root@master scala-2.11.6]# scala -version
Scala code runner version 2.11.6 -- Copyright 2002-2013, LAMP/EPFL

然后在剩下两个子节点中重复上述步骤

[root@slave1 src]# scala -version
Scala code runner version 2.11.6 -- Copyright 2002-2013, LAMP/EPFL

[root@slave2 ~]# scala -version
Scala code runner version 2.11.6 -- Copyright 2002-2013, LAMP/EPFL

安装完成

安装spark

1、解压

[root@master ~]# cd /usr/local/src/software/
[root@master software]# tar -zxvf spark-2.0.0-bin-hadoop2.6.gz -C /usr/local/src/

2、 修改配置文件(spark的HA)

[root@master spark-2.0.0]# cd conf/
root@master conf]# mv spark-env.sh.template spark-env.sh
[root@master conf]# vim spark-env.sh

export JAVA_HOME=/usr/local/src/jdk1.8.0_191
export SPARK_MASTER_PORT=7077
export HADOOP_HOME=/usr/local/src/hadoop-2.6.0
export HADOOP_CONF_DIR=/usr/local/src/hadoop-2.6.0/etc/hadoop
export SCALA_HOME=/usr/local/src/scala-2.11.11
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=master:2181,slave1:2181,slave2:2181 -Dspark.deploy.zookeeper.dir=/spark"


[root@master conf]# mv slaves.template slaves
[root@master conf]# vim slaves

master
slave1
slave2


然后在剩下两个子节点中重复上述步骤!

开启与测试

当在三台机器上配置完成后,在master上的节点上启动

[root@master spark-2.0.0]# sbin/start-all.sh 

starting org.apache.spark.deploy.master.Master, logging to /usr/local/src/spark-2.0.0/logs/spark-root-org.apache.spark.deploy.master.Master-1-master.out
slave1: starting org.apache.spark.deploy.worker.Worker, logging to /usr/local/src/spark-2.0.0/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-slave1.out
slave2: starting org.apache.spark.deploy.worker.Worker, logging to /usr/local/src/spark-2.0.0/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-slave2.out
master: starting org.apache.spark.deploy.worker.Worker, logging to /usr/local/src/spark-2.0.0/logs/spark-root-org.apache.spark.deploy.worker.Worker-1-master.out


[root@master spark-2.0.0]# jps
4001 JobHistoryServer
2930 DataNode
6531 Master
3125 JournalNode
3301 DFSZKFailoverController
6600 Worker
3401 ResourceManager
3497 NodeManager
2686 QuorumPeerMain
2830 NameNode
6702 Jps


[root@slave1 hadoop-2.6.0]# jps
2434 DataNode
2307 QuorumPeerMain
2372 NameNode
6103 Worker
6184 Jps
2681 NodeManager
3082 ResourceManager
2587 DFSZKFailoverController
2511 JournalNode


[root@slave2 spark-2.0.0]# jps
2274 QuorumPeerMain
2403 JournalNode
2518 NodeManager
4296 Worker
2332 DataNode
4463 Jps

查看进程发现spark集群只有master成功启动了Master进程,其他2个节点均没有启动成功,需要手动启动

root@slave1 spark-2.0.0]# sbin/start-master.sh 
starting org.apache.spark.deploy.master.Master, logging to /usr/local/src/spark-2.0.0/logs/spark-root-org.apache.spark.deploy.master.Master-1-slave1.out
[root@slave1 spark-2.0.0]# jps
2434 DataNode
2307 QuorumPeerMain
2372 NameNode
6103 Worker
6296 Jps
2681 NodeManager
3082 ResourceManager
2587 DFSZKFailoverController
2511 JournalNode
6223 Master



[root@slave2 spark-2.0.0]# sbin/start-master.sh
starting org.apache.spark.deploy.master.Master, logging to /usr/local/src/spark-2.0.0/logs/spark-root-org.apache.spark.deploy.master.Master-1-slave2.out
[root@slave2 spark-2.0.0]# jps
2274 QuorumPeerMain
2403 JournalNode
2518 NodeManager
4296 Worker
2332 DataNode
4399 Master
4463 Jps

这里我们可以进入web端查看spark的状态

master处于是ALIVE状态

mark

slave1与slave2处于均是STANDBY状态

mark

mark

跑了pi试下

[root@master spark-2.0.0]# bin/spark-submit --class org.apache.spark.examples.SparkPi --master local examples/jars/spark-examples_2.11-2.0.0.jar

mark

成功了

spark安装完成

安装Hbase

1、解压

[root@master ~]# cd /usr/local/src/software/
[root@master software]# tar -zxvf hbase-1.2.0-bin.tar.gz -C /usr/local/src/

2、 修改配置文件

我们需要修改hbase-env.sh和hbase-site.xml,还有regionservers文件

[root@master hbase-1.2.0]# cd conf/

[root@master conf]# vim hbase-env.sh

export JAVA_HOME=/usr/local/src/jdk1.8.0_191
export HBASE_LOG_DIR=${HBASE_HOME}/logs
export HBASE_MANAGES_ZK=false
export HBASE_PID_DIR=/usr/local/src/hbase-1.2.0/pid

[root@master conf]# vim hbase-site.xml

<configuration>
<property>
<name>hbase.rootdir</name>
<value>hdfs://master:9000/hbase</value>
</property>

<property>
<name>hbase.cluster.distributed</name>
<value>true</value>
</property>

<property>
<name>hbase.zookeeper.quorum</name>
<value>master,slave1,slave2</value>
</property>

<property>
<name>hbase.zookeeper.property.dataDir</name>
<value>/usr/local/src/zookeeper/data</value>
</property>

<property>
<name>hbase.tmp.dir</name>
<value>/usr/local/src/hbase-1.2.0/data</value>
</property>

<property>
<name>hbase.master</name>
<value>hdfs://master:60000</value>
</property>

<property>
<name>hbase.master.info.port</name>
<value>16010</value>
</property>

<property>
<name>hbase.regionserver.info.port</name>
<value>16030</value>
</property>
</configuration>

[root@master conf]# vim regionservers
master
slave1
slave2

修改完配置文件后,之后创建data文件夹,按上面写的目录创建

4、其他两个子节点的配置

把上面配置好的hbase整个文件夹传过去

[root@master src]# scp -r hbase-1.2.0/ slave1:/usr/local/src/
[root@master src]# scp -r hbase-1.2.0/ slave2:/usr/local/src/

5、测试

注意:测试Hbase之前,zookeeper和hadoop需要提前启动起来

[root@master hbase-1.2.0]# bin/start-hbase.sh 
[root@master hbase-1.2.0]# jps

mark

正确结果:主节点上显示:HMaster / 子节点上显示:HRegionServer

进入192.168.128.100:16010

mark

到此为止,Hbase配置就结束了

安装Sqoop

1、解压

# 注意:Sqoop只需要在master节点上安装配置

[root@master ~]# cd /usr/local/src/software/
[root@master software]# tar -zxvf sqoop-1.4.6.bin__hadoop-2.0.4-alpha.tar.gz -C /usr/local/src/
[root@master src]# mv sqoop-1.4.6.bin__hadoop-2.0.4-alpha/ sqoop-1.4.6

验证环境变量配置是否成功

mark

出现类似上图即成功,如果出现警告信息可以参考这篇文章,需要注释一些配置文件

https://blog.csdn.net/wx1528159409/article/details/87948866

3、修改配置文件

[root@master sqoop-1.4.6]# cd conf/
[root@master conf]# mv sqoop-env-template.sh sqoop-env.sh

[root@master conf]# vim sqoop-env.sh

#Set path to where bin/hadoop is available
export HADOOP_COMMON_HOME=/usr/local/src/hadoop-2.6.0

#Set path to where hadoop-*-core.jar is available
export HADOOP_MAPRED_HOME=/usr/local/src/hadoop-2.6.0

#set the path to where bin/hbase is available
export HBASE_HOME=/usr/local/src/hbase-1.2.0

#Set the path to where bin/hive is available
export HIVE_HOME=/usr/local/src/hive

#Set the path for where zookeper config dir is
export ZOOCFGDIR=/usr/local/src/zookeeper/conf

4、上传mysql-connector-java.jar到到sqoop的lib目录

在修改完配置文件后,把mysql的jar包上传的sqoop的lib目录下

也就是在安装hive时使用的jar包

5、验证sqoop连接mysql数据库是否成功

将mysql数据库的密码设置为123456

我们输入

sqoop list-databases --connect jdbc:mysql://master:3306 --username root --password 123456

如果连接成功,会返回类似这样的结果

mark

连接成功.

sqoop的安装与测试就到这里了

安装storm

1、解压

[root@master src]# cd software/
[root@master software]# tar -zxvf apache-storm-1.0.4.tar.gz -C /usr/local/src/
[root@master software]# cd ..
[root@master src]# mv apache-storm-1.0.4/ storm-1.0.4/

2、 修改配置文件

[root@master storm-1.0.4]# cd conf/
[root@master conf]# vim storm.yaml

storm.zookeeper.servers:
- "master"
- "slave1"
- "slave2"
storm.local.dir: "/usr/local/src/storm-1.0.4/localdir"
storm.zookeeper.port: 2181
nimbus.seeds: ["master"]
ui.host: 0.0.0.0
ui.port: 8080
supervisor.slots.ports:
- 6700
- 6701
- 6702

storm.zookeeper.servers这个参数中写的master,slave1,slave2和zookpeeper配置文件中写的必须一致

storm.local.dir: 这个参数是storm使用的本地文件系统目录(必须存在并且storm进程可读写)

这个可以自己配置,自己选择的文件目录

提一下,细心的读者可能这里发现了ui.port端口是8080端口,而在上文中的spark的网页端端口也是8088,这里我们可以修改spark的网页端口,可以参考这篇文章https://www.iteye.com/blog/daizj-2227382

我在这里把之前的spark端口改为8081

mark

同时创建

本地文件系统目录

[root@master storm-1.0.4]# mkdir localdir

4、其他两个子节点的配置

把上面配置好的storm整个文件夹传过去

[root@master src]# scp -r storm-1.0.4/ slave1:/usr/local/src/
[root@master src]# scp -r storm-1.0.4/ slave2:/usr/local/src/

5、启动

#master上启动nimbus和ui进程
[root@master storm-1.0.4]# storm nimbus &
[1] 8089
[root@master storm-1.0.4]# storm ui &
[2] 8126
[root@master storm-1.0.4]#

当出现这样的信息时

mark

再按下回车

#在slave1和slave2下启动supervisor进程

[root@slave1 storm-1.0.4]# storm supervisor &
[1] 4865


[root@slave2 storm-1.0.4]# storm supervisor &
[1] 3555

mark

mark

出现类似的按下回车

查看jps进程

master上的

mark

slave1上的

mark

slave2上的

mark

master上应该有nimbus节点和core节点,slave1和slave2上应该有supervisor节点

然后打开web端http://192.168.128.100:8080

mark

到这里storm的安装也就完成了

这里附上两个一键开关strome的脚本

start-storm-cluster.sh

#!/bin/bash
#nimbus节点
nimbusServers='master'

#supervisor节点
supervisorServers='slave1 slave2'

#启动所有的nimbus
for nim in $nimbusServers
do
ssh -T $nim <<EOF
source /root/.bash_profile
cd \$STORM_HOME
bin/storm nimbus >/dev/null 2>&1 &
EOF
echo 从节点 $nim 启动nimbus...[ done ]
sleep 1
done

#启动所有的ui
for u in $nimbusServers
do
ssh -T $u <<EOF
source /root/.bash_profile
cd \$STORM_HOME
bin/storm ui >/dev/null 2>&1 &
EOF
echo 从节点 $u 启动ui...[ done ]
sleep 1
done

#启动所有的supervisor
for visor in $supervisorServers
do
ssh -T $visor <<EOF
source /root/.bash_profile
cd \$STORM_HOME
bin/storm supervisor >/dev/null 2>&1 &
EOF
echo 从节点 $visor 启动supervisor...[ done ]
sleep 1
done

stop-storm-cluster.sh

#!/bin/bash

#nimbus节点
nimbusServers='master'

#supervisor节点
supervisorServers='slave1 slave2'

#停止所有的nimbus和ui
for nim in $nimbusServers
do
echo 从节点 $nim 停止nimbus和ui...[ done ]
ssh $nim "kill -9 `ssh $nim ps -ef | grep nimbus | awk '{print $2}'| head -n 1`" >/dev/null 2>&1
ssh $nim "kill -9 `ssh $nim ps -ef | grep core | awk '{print $2}'| head -n 1`" >/dev/null 2>&1
done

#停止所有的supervisor
for visor in $supervisorServers
do
echo 从节点 $visor 停止supervisor...[ done ]
ssh $visor "kill -9 `ssh $visor ps -ef | grep supervisor | awk '{print $2}'| head -n 1`" >/dev/null 2>&1
done

安装kafka

1、解压

[root@master ~]# cd /usr/local/src/software/
[root@master software]# tar -zxvf kafka_2.11-1.0.0.tgz -C /usr/local/src/

2、修改配置文件



[root@master kafka_2.11]# cd config/
[root@master config]# vim server.properties

broker.id=0
listeners=PLAINTEXT://192.168.128.100:9092
advertised.listeners=PLAINTEXT://192.168.128.100:9092
zookeeper.connect=192.168.128.100:2181,192.168.128.101:2181,192.168.128.102:2181



# 而在另外两个节点上,对server.properties要有几处修改
# broker.id 分别修改成: 1 和 2
# listeners 在ip那里分别修改成子节点对应的,即 PLAINTEXT://192.168.128.101:9092 和 PLAINTEXT://192.168.128.102:9092
# advertised.listeners 也在ip那里分别修改成子节点对应的,即 PLAINTEXT://192.168.128.101:9092 和 PLAINTEXT://192.168.128.102:9092
# zookeeper.connect 不需要修改

然后在剩下两个子节点中重复上述步骤!

4、启动测试

kafka在启动之前一定要启动zookpeeper,否则启动kafka会报错.

[root@master kafka_2.11]# bin/kafka-server-start.sh config/server.properties &

[root@slave1 kafka_2.11]# bin/kafka-server-start.sh config/server.properties &

[root@slave2 kafka_2.11]# bin/kafka-server-start.sh config/server.properties &

mark

kafka节点已经启动

启动后,我们开始测试,在master上输入

kafka-topics.sh --zookeeper 192.168.128.100:2181,192.168.128.101:2181,192.168.128.102:2181 --topic Test --replication-factor 1 --partitions 1 --create

创建test主题

mark

创建主题Test成功

创建成功后在master上输入

[root@master kafka_2.11]# kafka-console-producer.sh --broker-list 192.168.128.100:9092,192.168.128.101:9092,192.168.128.102:9092 --topic Test

之后

启动生产者

[root@slave1 kafka_2.11]# kafka-console-consumer.sh --bootstrap-server 192.168.128.101:9092 --topic Test --from-beginning


[root@slave2 kafka_2.11]# kafka-console-consumer.sh --bootstrap-server 192.168.128.102:9092 --topic Test --from-beginning

之后在主节点上的命令行上输入一句话,例如:hello,如果成功的话,应该是这样的,如图:

mark

在主节点上输入的,会自动同步在其他两台节点上

这里我们的kafka也就搭建完成了。

关闭kafka方法,在命令行下,按ctrl加c,退出命令行,输入

[root@master kafka_2.11]# bin/kafka-server-stop.sh

[root@slave1 kafka_2.11]# bin/kafka-server-stop.sh

[root@slave2 kafka_2.11]# bin/kafka-server-stop.sh

应该会得到类似提示

mark

按回车。

即可退出

我们可以使用jps查看一下当前进程

mark

kafka进程已经停止了

就代表kafka已经关闭了

安装flume

1、解压

[root@master software]# tar -zxvf apache-flume-1.6.0-bin.tar.gz -C /usr/local/src/
[root@master src]# mv apache-flume-1.6.0-bin flume-1.6.0

2、修改配置文件

[root@master flume-1.6.0]# cd conf/
[root@master conf]# mv flume-env.sh.template flume-env.sh
[root@master conf]# vim flume-env.sh

export JAVA_HOME=/usr/local/src/jdk1.8.0_191

这里flume就算已经配置完成了

flume不需要修改太多东西,更多的都是自己自定义需要监听的目录或者端口

3、测试

这里就写监听本地目录上传到hdfs作为测试

[root@master flume-1.6.0]# mkdir job/
[root@master flume-1.6.0]# cd job/
[root@master job]# touch test.conf
[root@master job]# vim test.conf


a1.sources = r1
a1.channels = c1
a1.sinks = k1

a1.sources.r1.type=spooldir
a1.sources.r1.spoolDir=/usr/local/src/set/test

a1.sinks.k1.type=hdfs
a1.sinks.k1.hdfs.path=hdfs://master:9000/test

a1.channels.c1.type=file

a1.sources.r1.channels=c1
a1.sinks.k1.channel=c1


这里监听的test的目录.我们在这个目录创建的文件会被上传到hdfs的test目录中

启动

[root@master flume-1.6.0]#bin/flume-ng agent -f job/test.conf -n a1 

mark

这个时候我们新开一个master链接,在test目录新建test.txt,内容随便写

mark

mark

这样flume就会开始上传文件到hdfs中

mark

这样就是上传成功了

(那个81结尾文件的是我上次测试形成的)

我们本次上传的是那个70结尾的

关闭flume使用ctrl+c

本文完