Hadoop zookeeper Flume Spark Kafka Hbase大数据集群搭建教程
集群搭建流程
一、 环境的准备和必要软件的下载
下载并安装vmvare虚拟机软件
下载centos7系统镜像文件,下载链接
下载hadoop-2.8.3.tar.gz ,下载链接
下载hbase-1.2.6-bin.tar.gz,下载链接
下载apache-flume-1.8.0-bin.tar.gz下载链接
下载jdk-8u161-linux-x64.rpm 下载链接
下载kafka-0.8.2.2-src.gz 下载链接
下载spark-2.3.0-bin-hadoop2.7.tgz 下载链接
下载zookeeper-3.4.10.tar.gz 下载链接
二、 各类软件的安装和配置
Hadoop与JDK
安装centos7
设置虚拟机中的网络设置
在虚拟机中选用host-only网络
4.
vi /etc/sysconfig/network
NETWORKING=yes GATEWAY=192.168.56.1
vi /etc/sysconfig/network-sripts/ifcfg-enp0s3 TYPE=Ethernet IPADDR=192.168.56.100 NETMASK=255.255.255.0
修改主机名
hostnamectl set-hostname master
(主机名千万不能有下划线!)重启网络
service network restart
7.
互相ping,看是否测试成功,若不成功,注意防火墙的影响。关闭windows或虚拟机的防火墙。systemctl stop firewalld system disable firewalld
使用XShell登陆
检查ssh服务状态
systemctl status sshd (service sshd status)
,验证使用XShell是否能登陆成功。将hadoop和jdk上传到虚拟机
安装
JDK rpm -ivh ./xxxxx.jdk
,验证rpm -qa | grep jdk
,在命令行中敲java
命令,确认jdk已经安装完成
jdk默认安装在
/usr/java
目录下安装hadoop
cd /usr/local
tar –xvf ./hadoop-2.7.2.tar.gz
把目录修改为hadoop mv hadoop-2... hadoop
修改hadoop-env.sh
vi /usr/local/hadoop/etc/hadoop/hadoop-env.sh
[图片上传失败...(image-2a427a-1548213084029)]
修改export JAVA_HOME 语句为 export JAVA_HOME=/usr/java/default
把/usr/hadoop/bin和/usr/hadoop/sbin设到PATH中
vi /etc/profile
18.
追加 export PATH=$PATH:/usr/hadoop/bin:/usr/hadoop/sbin
source etc/profile
测试hadoop命令是否可以直接执行,任意目录下敲hadoop
关闭虚拟机,复制3份
-
分别修改虚拟机的ip和hostname,确认互相能够ping通,用ssh登陆,同时修改所有虚拟机的/etc/hosts,确认使用名字可以ping通
image.png
Zookeeper
将zookeeper上传到虚拟机
解压zookeeper并将文件夹重命名为zookeeper
在主目录下创建data和logs两个目录用于存储数据和日志
cd /usr/myapp/zookeeper
mkdir data
mkdir logs
- 在conf目录下将自带的配置文件改名为zoo.cfg文件,并写入以下内容
- 在data目录下vim myid文件,填入一个数字id,注意各台主机id必须不相同
Hbase
将hbase上传到虚拟机
解压hbase并将文件夹重命名为hbase
cd hbase/conf
vim hbase-site.xml
修改zookeeper所在位置,修改集群各主机名,指定zookeeper通讯端口为默认的2181端口,指定master
注意各台slave同步配置时指定相同的master
- 退出并vim hbase-env.sh 修改javahome
- 由于不使用hbase自带的zookeeper,故将此属性设为false
- vim regionservers 指定regionservers为三台
Flume
将flume上传到虚拟机
解压flume并将文件夹重命名为flume
进入conf文件夹
vim flume-env.sh
指定javahome和下面的参数
- 新建配置文件 vim hw.conf 写入以下内容
Kafka
将Kafka上传到虚拟机
解压Kafka并将文件夹重命名为kafka
cd kafka
进入kafka文件夹mkdir kafkalogs
新建日志存储目录kafkalogs进入conf文件夹
由于要使用非自带的zookeeper所以修改zookeeper.conf
-
vim server.conf
修改zookeeper连接的端口号为默认的本地2181
- 修改每台主机的brokerid,每个id唯一不相同
- 指定日志存储目录
Spark
将spark上传到虚拟机
解压spark并将文件夹重命名为spark
cd spark进入spark文件夹
由于我们使用的是spark的local模式故不用修改配置文件,默认即可
三、 各类软件的启动命令
Hadoop:
cd /usr/local/hadoop/sbin
在master上开启namenode ./hadoop-daemon.sh start namenode
在slaves上开启datanode ./hadoop-daemon.sh start datanode
使用jps命令查看开启状态
Zookeeper
cd /usr/local/zookeeper/bin
开启命令 ./zkServer.sh start
查看状态 ./zkServer.sh status
出现一下提示表明开启成功
Hbase
cd /usr/local/hbase/bin
master上 ./hbase-daemon.sh start master
slaves上 ./hbase-daemon.sh start regionserver
使用jps命令查看,出现以下情况即为开启成功
cd /usr/local/kafka/bin
在所有机器上./kafka-server-start.sh ../config/server.properties &
使用jps命令查看出现kafka即为成功
四、 安装中遇到的一些问题与解决方案
Lock on /tmp/hadoop-root/dfs/data/in_use.lock acquired by nodename 2648@slave1
Id
解决方案:
1,删除dfs.namenode.name.dir和dfs.datanode.data.dir 目录下的所有文件
2,修改hosts
cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.149.128 localhost
3,重新格式化:bin/hadoop namenode -format
参考 https://www.cnblogs.com/tankaixiong/p/4177832.html
发现 hbase 挂了, 查看 master log
master.HMaster: Unhandled exception. Starting shutdown.
org.apache.hadoop.hbase.util.FileSystemVersionException: HBase file layout needs to be upgraded. You have version null and I want version 8. Is your hbase.rootdir valid? If so, you may need to run 'hbase hbck -fixVersionFile'.
at org.apache.hadoop.hbase.util.FSUtils.checkVersion(FSUtils.java:602)
at org.apache.hadoop.hbase.master.MasterFileSystem.checkRootDir(MasterFileSystem.java:456)
at org.apache.hadoop.hbase.master.MasterFileSystem.createInitialFileSystemLayout(MasterFileSystem.java:147)
at org.apache.hadoop.hbase.master.MasterFileSystem.(MasterFileSystem.java:128)
at org.apache.hadoop.hbase.master.HMaster.finishInitialization(HMaster.java:802)
at org.apache.hadoop.hbase.master.HMaster.run(HMaster.java:615)
at java.lang.Thread.run(Thread.java:695)
解决方案:
重建一下 hdfs/hbase 文件
bin/hadoop fs -rm -r /hbase
参考:https://www.cnblogs.com/zemliu/p/3824629.html
Could not find the main class: org.apache.flume.node.Application. Program will exit.
First of all, add the -c parameter to the command like this:
bin/flume-ng agent -n agentA -c conf -f conf/MultipleFlumes.properties -Dflume.root.logger=INFO,console
Adding that parameter does not resolve the issue but if you don't include it you get another error because of log4j configuration file.
As for your problem, check if FLUME_HOME is defined, and if that is the case, unset it with
unset FLUME_HOME
参考:https://stackoverflow.com/questions/24483464/flume-could-not-find-the-main-class-org-apache-flume-tools-getjavaproperty
五、 kafka配置文件参考
由于每台电脑的各种不同所以以下的配置文件仅供参考
agent.sources.s1.type=exec
agent.sources.s1.command=tail -F /Users/it-od-m/Downloads/abc.log
agent.sources.s1.channels=c1
agent.channels.c1.type=memory
agent.channels.c1.capacity=10000
agent.channels.c1.transactionCapacity=100
#
agent.sinks.k1.type= org.apache.flume.sink.kafka.KafkaSink
#
agent.sinks.k1.brokerList=127.0.0.1:9092
#
Topic
agent.sinks.k1.topic=testKJ1
#
agent.sinks.k1.serializer.class=kafka.serializer.StringEncoder
agent.sinks.k1.channel=c1