Hadoop+zookeeper+Flume+Spark+Kafka+Hbase大数据集群搭建

Hadoop zookeeper Flume Spark Kafka Hbase大数据集群搭建教程

集群搭建流程

一、 环境的准备和必要软件的下载

  1. 下载并安装vmvare虚拟机软件

  2. 下载centos7系统镜像文件,下载链接

  3. 下载hadoop-2.8.3.tar.gz ,下载链接

  4. 下载hbase-1.2.6-bin.tar.gz,下载链接

  5. 下载apache-flume-1.8.0-bin.tar.gz下载链接

  6. 下载jdk-8u161-linux-x64.rpm 下载链接

  7. 下载kafka-0.8.2.2-src.gz 下载链接

  8. 下载spark-2.3.0-bin-hadoop2.7.tgz 下载链接

  9. 下载zookeeper-3.4.10.tar.gz 下载链接

二、 各类软件的安装和配置

Hadoop与JDK

  1. 安装centos7

  2. 设置虚拟机中的网络设置

  3. 在虚拟机中选用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
  1. 修改主机名hostnamectl set-hostname master (主机名千万不能有下划线!)

  2. 重启网络service network restart

7. 互相ping,看是否测试成功,若不成功,注意防火墙的影响。关闭windows或虚拟机的防火墙。systemctl stop firewalld system disable firewalld

  1. 使用XShell登陆

  2. 检查ssh服务状态systemctl status sshd (service sshd status),验证使用XShell是否能登陆成功。

  3. 将hadoop和jdk上传到虚拟机

  4. 安装JDK rpm -ivh ./xxxxx.jdk,验证rpm -qa | grep jdk,在命令行中敲java命令,确认jdk已经安装完成

《Hadoop+zookeeper+Flume+Spark+Kafka+Hbase大数据集群搭建》 image.png

  1. jdk默认安装在/usr/java目录下

  2. 安装hadoop

cd /usr/local
tar –xvf ./hadoop-2.7.2.tar.gz
  1. 把目录修改为hadoop mv hadoop-2… hadoop

  2. 修改hadoop-env.sh

vi /usr/local/hadoop/etc/hadoop/hadoop-env.sh

《Hadoop+zookeeper+Flume+Spark+Kafka+Hbase大数据集群搭建》 image.png

[图片上传失败…(image-2a427a-1548213084029)]

  1. 修改export JAVA_HOME 语句为 export JAVA_HOME=/usr/java/default

  2. 把/usr/hadoop/bin和/usr/hadoop/sbin设到PATH中

vi /etc/profile

18. 追加 export PATH=$PATH:/usr/hadoop/bin:/usr/hadoop/sbin

source etc/profile
  1. 测试hadoop命令是否可以直接执行,任意目录下敲hadoop

  2. 关闭虚拟机,复制3份

  3. 分别修改虚拟机的ip和hostname,确认互相能够ping通,用ssh登陆,同时修改所有虚拟机的/etc/hosts,确认使用名字可以ping通

    《Hadoop+zookeeper+Flume+Spark+Kafka+Hbase大数据集群搭建》 image.png

Zookeeper

  1. 将zookeeper上传到虚拟机

  2. 解压zookeeper并将文件夹重命名为zookeeper

  3. 在主目录下创建data和logs两个目录用于存储数据和日志

cd /usr/myapp/zookeeper
mkdir data   
mkdir logs
  1. 在conf目录下将自带的配置文件改名为zoo.cfg文件,并写入以下内容

《Hadoop+zookeeper+Flume+Spark+Kafka+Hbase大数据集群搭建》 image.png

  1. 在data目录下vim myid文件,填入一个数字id,注意各台主机id必须不相同

《Hadoop+zookeeper+Flume+Spark+Kafka+Hbase大数据集群搭建》 image.png

Hbase

  1. 将hbase上传到虚拟机

  2. 解压hbase并将文件夹重命名为hbase

cd hbase/conf
vim hbase-site.xml
  1. 修改zookeeper所在位置,修改集群各主机名,指定zookeeper通讯端口为默认的2181端口,指定master

  2. 注意各台slave同步配置时指定相同的master

《Hadoop+zookeeper+Flume+Spark+Kafka+Hbase大数据集群搭建》 image.png

  1. 退出并vim hbase-env.sh 修改javahome

《Hadoop+zookeeper+Flume+Spark+Kafka+Hbase大数据集群搭建》 image.png

  1. 由于不使用hbase自带的zookeeper,故将此属性设为false

《Hadoop+zookeeper+Flume+Spark+Kafka+Hbase大数据集群搭建》 image.png

  1. vim regionservers 指定regionservers为三台

《Hadoop+zookeeper+Flume+Spark+Kafka+Hbase大数据集群搭建》 image.png

Flume

  1. 将flume上传到虚拟机

  2. 解压flume并将文件夹重命名为flume

  3. 进入conf文件夹

  4. vim flume-env.sh

  5. 指定javahome和下面的参数

《Hadoop+zookeeper+Flume+Spark+Kafka+Hbase大数据集群搭建》 image.png

  1. 新建配置文件 vim hw.conf 写入以下内容

《Hadoop+zookeeper+Flume+Spark+Kafka+Hbase大数据集群搭建》 image.png

Kafka

  1. 将Kafka上传到虚拟机

  2. 解压Kafka并将文件夹重命名为kafka

  3. cd kafka进入kafka文件夹

  4. mkdir kafkalogs新建日志存储目录kafkalogs

  5. 进入conf文件夹

  6. 由于要使用非自带的zookeeper所以修改zookeeper.conf

《Hadoop+zookeeper+Flume+Spark+Kafka+Hbase大数据集群搭建》 image.png

  1. vim server.conf 修改zookeeper连接的端口号为默认的本地2181

《Hadoop+zookeeper+Flume+Spark+Kafka+Hbase大数据集群搭建》 image.png

  1. 修改每台主机的brokerid,每个id唯一不相同

《Hadoop+zookeeper+Flume+Spark+Kafka+Hbase大数据集群搭建》 image.png

  1. 指定日志存储目录

《Hadoop+zookeeper+Flume+Spark+Kafka+Hbase大数据集群搭建》 image.png

Spark

  1. 将spark上传到虚拟机

  2. 解压spark并将文件夹重命名为spark

  3. cd spark进入spark文件夹

  4. 由于我们使用的是spark的local模式故不用修改配置文件,默认即可

三、 各类软件的启动命令

Hadoop:

cd /usr/local/hadoop/sbin

在master上开启namenode ./hadoop-daemon.sh start namenode

在slaves上开启datanode ./hadoop-daemon.sh start datanode

使用jps命令查看开启状态

《Hadoop+zookeeper+Flume+Spark+Kafka+Hbase大数据集群搭建》 image.png

Zookeeper

cd /usr/local/zookeeper/bin

开启命令 ./zkServer.sh start

查看状态 ./zkServer.sh status

出现一下提示表明开启成功

《Hadoop+zookeeper+Flume+Spark+Kafka+Hbase大数据集群搭建》 image.png

Hbase

cd /usr/local/hbase/bin

master上 ./hbase-daemon.sh start master

slaves上 ./hbase-daemon.sh start regionserver

使用jps命令查看,出现以下情况即为开启成功

《Hadoop+zookeeper+Flume+Spark+Kafka+Hbase大数据集群搭建》 image.png

cd /usr/local/kafka/bin

在所有机器上./kafka-server-start.sh ../config/server.properties &

使用jps命令查看出现kafka即为成功

《Hadoop+zookeeper+Flume+Spark+Kafka+Hbase大数据集群搭建》 image.png

四、 安装中遇到的一些问题与解决方案

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.<init>(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
    原文作者:jjjkkkhhhggg
    原文地址: https://www.jianshu.com/p/c297e0a7ae07
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞