基于centos7的hadoop2.7、zookeeper3.5、hbase1.3、spark2.3、scala2.11、kafka2.11、hive3.1、flume1.8、sqoop1.4组件部署

部署前准备

修改主机名

1、修改主机名(6台机器都要操作,以Master为举例)

    hostnamectl set-hostname Master(永久修改主机名)

    reboot(重启系统)

修改hosts

将第一行127.0.0.1 xxxx注释掉,加上:

195.168.2.127 master

195.168.2.128 slave1

195.168.2.129 slave2

确认网卡信息

vi /etc/sysconfig/network-scripts/ifcfg.ens0

BOOTRPROTO=static

IPADDR=192.168.2.127

NETMASK=255.255.255.0

GATEWAY=192.168.2.1

DNS1=192.168.2.1

DNS2=8.8.8.8

NAME=ens32

ONBOOT=yes

DEVICE=ens32

systemctl restart network

修改以上三个后> reboot

重启后确认IP是否都是设置那样了

ssh

1、 ssh生成密钥(6台机器都要操作)

      ssh-keygen -t rsa (连续三次回车)

2、将3台的id_rsa_pub合并到一个authorized_keys上

分别登陆slave1、slave2,输入:

> scp .ssh/id_rsa.pub master:/home/kfs/.ssh/id_rsa_slave1

> scp .ssh/id_rsa.pub master:/home/kfs/.ssh/id_rsa_slave2

在master输入:

> cat  ~/.ssh/id_rsa*  >> authorized_keys

> scp .ssh/ authorized_keys slave1:/home/kfs/.ssh/

> scp .ssh/ authorized_keys slave2:/home/kfs/.ssh/

每台都修改权限:

> chmod 600 authorized_keys

  1. 每台各自登陆

(首次ssh会输入yes,所以需要进行这一步)

slave1、salve2同样进行以上步骤

防火墙

systemctl stop firewalld.service

安装jdk

卸载原来的jdk

1、安装jdk之前,先检查是否已经安装了open的jdk,有的话需要先卸载(6台机器都要卸载)

    java -version

2、查看有jdk的存在,需要先卸载然后再安装oracle的jdk

    rpm -qa | grep java      (查询java版本)

3、rpm -e --nodeps xxx      (逐个删除完)

解压配置新的JDK

1、登陆kfs用户,解压到/home/kfs/下

     > tar- zxvf jdk-8u144-linux-x64.tar.gz -C ~/

2、.jdk的环境变量配置(使用的是在root目录下的全局配置文件/etc/profile,6台机器都要配置,master举例)

      > vi ~/.bashrc

export JAVA_HOME=/home/kfs/jdk1.8.0_141

export PATH=$PATH:$JAVA_HOME/bin

保存退出之后使用命令让配置生效

> source /etc/profile

  验证版本

>java -version

安装架构

安装的软件明细

JDK

scala

hadoop

hive

mysql

sqoop

zookeeper

hbase

flume

spark

kafka

Master

Slave1

Slave2

安装的软Hadoop HA件明细

QuorumPeerMain

journalnode

namenode

nodemanager

DFSZKFailover

datanode

resourcemanager

master

slave1

slave2

服务说明

QuorumPeerMain

是zookeeper集群的启动类,用于加载配置启动QuorumPeer线程,确定了基于paxos算法的zookeeper集群数量;QuorumPeer线程是zookeeper的Laeder选举的启动类,负责选举算法、zk数据恢复、启动leader选举等。

在zookeeper/conf/zoo.cfg  server.x个数确定;

启动不起来,根据报错信息排查zoo.cfg的server.x=master:2888:3888、dataDir=xx是否包含myid(从1开始)。

Journalnode

实现两个NameNode之间的数据同步,通过一组JournalNodes(JNs)的独立进程进行相互通信,当active状态的namenode的命名空间有变化,会通知大部分的JournalNode进程。Standby的namenode有能力读取JNs的变更信息,并监控edit log的变化,同时将变化应用于自己的命名空间,保证了集群出错时,acitive和standby的空间状态是一致的。

Namenode

负责客户端(web)请求的相应;元数据的管理、查询。

启动时,将fsimage(镜像)载入到内存,并执行(replay)编辑日志editlog的各项操作;一旦在内存建立文件系统元数据映射,则创建一个新的fsimage文件(元数据镜像文件:保存文件系统的目录树)、一个空的editlog(元数据操作日志:针对目录树的修改操作)文件;

开始监听RPC和HTTP请求。

DFSZKFailover

Failover故障转移需要两个组件:Zookeeper quorum(仲裁:驱动ZKFC的运转)、ZKFCFailoverController进程(ZKFC)。

ZKFC:每个NameNode上运行的zookeeper一个zookeeper进程,主要是监控namenode的健康状态、zookeeper会话管理、基于zookeeper的选举。

基于centos7的hadoop2.7、zookeeper3.5、hbase1.3、spark2.3、scala2.11、kafka2.11、hive3.1、flume1.8、sqoop1.4组件部署_第1张图片

 

Datanode

负责管理所在节点上存储的数据读写,及存储数据;每三秒datanode节点向namenode发送心跳信号和文件块状态报告;执行数据的流水线复制。

基于centos7的hadoop2.7、zookeeper3.5、hbase1.3、spark2.3、scala2.11、kafka2.11、hive3.1、flume1.8、sqoop1.4组件部署_第2张图片

 

Resourcemanager & Nodemanager & ApplicationMasters

1、ResourceManager(RM),是集群资源的仲裁者,它包括两部分:一个是可插拔式的调度Scheduler,一个是ApplicationManager,用于管理集群中的用户作业。

2、NodeManagers (NMs)从ResourceManager获取指令并管理本节点的可用资源(Container使用情况)

3、ApplicationMasters (AMs)的职责是从ResourceManager谈判资源(Containers),为NodeManagers启动容器,并且和NodeManager交互来执行和监控具体的task

基于centos7的hadoop2.7、zookeeper3.5、hbase1.3、spark2.3、scala2.11、kafka2.11、hive3.1、flume1.8、sqoop1.4组件部署_第3张图片

 

Hmaster & HRegionserver

Hmaster 作用:管理用户对table表的增删改查;管理HRegion服务器的负载均衡,调整HRegion的分布;在HRgion分裂后,负责新的HRegion的分配;HRegion停机后,负责失效HRegion服务器上HRegion的迁移。

HRegionsServer一般和DataNode在同台机器运行,实现数据的本地行。HRegionsServer包含多个HRegion,由HLog(副本机制,防止hbase宕机)、BlockCache(读缓存,默认 on-heap LRUBlockCache 和 BucketCache)、HStore(HBase的存储核心,memStore和storeFile组成)、HFile(HbasekeyValue数据、Hadoop的二进制)组成。

jobhistory & historyServer

historyServer同时启动两个定时任务线程,分别解析eventLog和清理过期的eventLog日志文件,默认18080.

Runjar(metadata、metastore、hiveserver2)

metadata(需要初始化):hive元数据定义的表名,一般存在mysql中,在测试阶段也可以用hive内置Derby数据库。

metastore:hivestore服务端。主要提供将DDL,DML等语句转换为MapReduce,提交到hdfs中。默认监听端口:9083

hiveserver2:hive服务端,提供hive服务,可以通过beeline、jdbc(java代码连接)等多种方式多客户端连接到hive。基于Thrift RPC的实现是HiveServer的改进版本。默认10002端口,可以master:10002/jmx获取指标。

端口列表

组件

Daemon

端口

配置

说明

HDFS

DataNode

50010

dfs.datanode.address

datanode服务端口,用于数据传输

50075

dfs.datanode.http.address

http服务的端口

50475

dfs.datanode.https.address

https服务的端口

50020

dfs.datanode.ipc.address

ipc服务的端口

NameNode

50070

dfs.namenode.http-address

http服务的端口

50470

dfs.namenode.https-address

https服务的端口

8020

fs.defaultFS

接收Client连接的RPC端口,用于获取文件系统metadata信息。

journalnode

8485

dfs.journalnode.rpc-address

RPC服务

8480

dfs.journalnode.http-address

HTTP服务

ZKFC

8019

dfs.ha.zkfc.port

ZooKeeper FailoverController,用于NN HA

YARN

ResourceManager

8032

yarn.resourcemanager.address

RM的applications manager(ASM)端口

8030

yarn.resourcemanager.scheduler.address

scheduler组件的IPC端口

8031

yarn.resourcemanager.resource-tracker.address

IPC

8033

yarn.resourcemanager.admin.address

IPC

8088

yarn.resourcemanager.webapp.address

http服务端口

NodeManager

8040

yarn.nodemanager.localizer.address

localizer IPC

8042

yarn.nodemanager.webapp.address

http服务端口

8041

yarn.nodemanager.address

NM中container manager的端口

JobHistory Server

10020

mapreduce.jobhistory.address

IPC

19888

mapreduce.jobhistory.webapp.address

http服务端口

HBase

Master

60000

hbase.master.port

IPC

60010

hbase.master.info.port

http服务端口

RegionServer

60020

hbase.regionserver.port

IPC

60030

hbase.regionserver.info.port

http服务端口

HQuorumPeer

2181

hbase.zookeeper.property.clientPort

HBase-managed ZK mode,使用独立的ZooKeeper集群则不会启用该端口。

Hive

Metastore

9083

/etc/default/hive-metastore中export PORT=来更新默认端口

HiveServe2r

10002

/etc/hive/conf/hive-env.sh中export HIVE_SERVER2_THRIFT_PORT=来更新默认端口

ZooKeeper

Server

2181

/etc/zookeeper/conf/zoo.cfg中clientPort=

对客户端提供服务的端口

2888

/etc/zookeeper/conf/zoo.cfg中server.x=[hostname]:nnnnn[:nnnnn],标蓝部分

follower用来连接到leader,只在leader上监听该端口。

3888

/etc/zookeeper/conf/zoo.cfg中server.x=[hostname]:nnnnn[:nnnnn],标蓝部分

用于leader选举的。只在electionAlg是1,2或3(默认)时需要。

安装zookeeper

单数台10-3、20-5,选举的半数机制保证运行

解压、配置一个配置文件conf/下cp zoo_sample.cfg zoo.cfg、根目录下新建两个文件夹data  log、data下新建文件myid内容为1或2(不同主机不同myid)..

dataDir=/home/kfs/zookeeper-3.4.5/data

dataLogDir=/home/kfs/zookeeper-3.4.5/log

clientPort=2181

server.1=master:2888:3888

server.2=salve1:2888:3888

server.3=salve1:2888:3888

> echo “1” > data/myid

不用在profile增加环境变量,运行都是bin/zkServer.sh start 

 安装hadoop

先对一个进行配制好,然后scp到集群每台上运行

四个配置文件core-site.xml、hdfs-site.xml、mapred-site.xml、yarn-site.xml、slaves

在hadoop-2.8.4/etc/hadoop下

core-site.xml

 

hdfs-site.xml

基于centos7的hadoop2.7、zookeeper3.5、hbase1.3、spark2.3、scala2.11、kafka2.11、hive3.1、flume1.8、sqoop1.4组件部署_第4张图片

 

mapred-site.xml

基于centos7的hadoop2.7、zookeeper3.5、hbase1.3、spark2.3、scala2.11、kafka2.11、hive3.1、flume1.8、sqoop1.4组件部署_第5张图片

z56F7AATIAJMAEmwASYABNgAhdEgOPvC+psVpUJMAEmwASYABNgAkzg6AT+H0QPA2nbHnlDAAAAAElFTkSuQmCC

yarn-site.xml

基于centos7的hadoop2.7、zookeeper3.5、hbase1.3、spark2.3、scala2.11、kafka2.11、hive3.1、flume1.8、sqoop1.4组件部署_第6张图片

 

yarn.nodemanager.aux-services           mapreduce_shuffle

yarn.resourcemanager.recovery.enabled    true

yarn.resourcemanager.store.class          org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore

yarn.nodemanager.resource.memory-mb   8192

yarn.nodemanager.resource.cpu-vcores    8

yarn.scheduler.maximum-allocation-mb    8192

yarn.scheduler.maximum-allocation-vcores  4

slaves

两个脚本文件设置java环境:hadoop-env.sh、yarn-env.sh

 

需要主要windows复制过去的话,换行符的格式的问题。

vi  **.sh

set ff=unix

sed -i  “s/\r//”  **.sh 

kfs用户修改/home/kfs/.bashrc文件

>  source /home/kfs/.bashrc

新建文件夹hadoop.tmp.dir、dfs.journalnode.edits.dir的目录

>  mkdir  /home/kfs/data/hadoop-data/tmp

>  mkdir  /home/kfs/data/hadoop-data/journaldata

启动(包括zookeeper)

首次启动

1、首先启动各个节点的Zookeeper,在各个节点上执行以下命令:

> bin/zkServer.sh start

2、在每个journalnode节点用如下命令启动journalnode

> sbin/hadoop-daemon.sh start journalnode

3、在主namenode节点格式化namenode和journalnode目录

> hdfs namenode -format ns

4、在主namenode节点启动namenode进程

> sbin/hadoop-daemon.sh start namenode

5、在备namenode节点执行第一行命令,这个是把备namenode节点的目录格式化并把元数据从主namenode节点copy过来,并且这个命令不会把journalnode目录再格式化了!然后用第二个命令启动备namenode进程!

> hdfs namenode -bootstrapStandby

> sbin/hadoop-daemon.sh start namenode

6、在某一个namenode节点执行如下命令,创建命名空间

> hdfs zkfc -formatZK

7、在两个namenode节点都执行以下命令

> sbin/hadoop-daemon.sh start zkfc

8、启动dfs

> sbin/start-all.sh

9、启动备regionserver

> sbin/yarn-daemon.sh start resourcemanager

用jps查看一下起的进程是否正确

  基于centos7的hadoop2.7、zookeeper3.5、hbase1.3、spark2.3、scala2.11、kafka2.11、hive3.1、flume1.8、sqoop1.4组件部署_第7张图片 基于centos7的hadoop2.7、zookeeper3.5、hbase1.3、spark2.3、scala2.11、kafka2.11、hive3.1、flume1.8、sqoop1.4组件部署_第8张图片 基于centos7的hadoop2.7、zookeeper3.5、hbase1.3、spark2.3、scala2.11、kafka2.11、hive3.1、flume1.8、sqoop1.4组件部署_第9张图片

后续启动

(zookeeper)节点启动:zookeeper/bin/zkServer.sh start

(yarn)两个rm节点分别运行:hadoop-2.8.4/sbin/yarn-daemon.sh start resourcemanager

(yarn)在主或者备节点启动:hadoop-2.8.4/sbin/start-yarn.sh

(zkfc namenode datanode)所有:hadoop-2.8.4/sbin/start-all.sh

确保每个zookeeper集群启动成功后,再启动dfs,这个步骤可能需要多次;

停止stop-dfs.sh、stop- yarn.sh、stop-all.sh

(Historyserver)Historyserver:sbin/mr-jobhistory-daemon.sh start/stop historyserver

可访问的地址

Hadoop hdfs:http:// slave1:50070/dfshealth.html#tab-overview

一个active,一个standy

Hadoop hdfs  datanode : http://slave1:50075/datanode.html

Hadoop yarn resourcemanager:http://master:8088

如果配置了mapreduce的historyserver

则通过./sbin/mr-jobhistory-daemon.sh start/stop historyserver

 

访问http://master:19888

实操

hadoop fs(使用范围最广,对象:可任何对象);hdfs dfs(只HDFS文件系统相关,常用),下面测试两者一样。

创建三个测试文件

 

创建目录,将测试文本Put到目录上

#本地的/home/hdfs/input/文件夹下有多个txt文件,每个单词单独一行

hadoop fs -mkdir -p /hadoop/test

hadoop fs -ls /hadoop/test/

hadoop fs -put test/*  /hadoop/test/

运行测试(testout不能存在)

hadoop-mapreduce-examples-2.7.0.jar在路径share/hadoop/mapreduce下

yarn jar ~/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.4.jar wordcount /hadoop/test /hadoop/testout

hadoop dfs -ls  /hadoop/testout

hadoop dfs -cat  /hadoop/testout/part-r-00000

hadoop fs -rm -r -skipTrash /hadoop/testout

基于centos7的hadoop2.7、zookeeper3.5、hbase1.3、spark2.3、scala2.11、kafka2.11、hive3.1、flume1.8、sqoop1.4组件部署_第10张图片

 

原理

Yarn

基于centos7的hadoop2.7、zookeeper3.5、hbase1.3、spark2.3、scala2.11、kafka2.11、hive3.1、flume1.8、sqoop1.4组件部署_第11张图片

 

Hdfs

mapreduce.map.java.opts控制maptask堆内存大小。(不够会报错 java.lang.outofmemoryerror)

基于centos7的hadoop2.7、zookeeper3.5、hbase1.3、spark2.3、scala2.11、kafka2.11、hive3.1、flume1.8、sqoop1.4组件部署_第12张图片

 

安装hbase(scp每台都需要启动)

/home/data目录下创建hbase-data存放hbase的数据 data和log、pids、tmp

 

修改hbase-site.xml、hbase-env.sh、regionservers

hbase-site.xml

基于centos7的hadoop2.7、zookeeper3.5、hbase1.3、spark2.3、scala2.11、kafka2.11、hive3.1、flume1.8、sqoop1.4组件部署_第13张图片

hbase-env.sh

regionservers

 

复制hadoop/etc/hadoop下的core-site.xml和hdfs-site.xml文件到hbase的conf下

拷贝新建的文件夹data、hbase的文件夹到别的节点上

>  scp -r /home/kfs/data/hbase-data/ slave1:/home/kfs/data/

>  scp -r /home/kfs/hbase-1.2.6/ slave1:/home/kfs/

启动

返回kfs用户启动主HMaster

>  ./hbase-1.2.6/bin/start-hbase.sh

启动Slave1作为备份的HMaster

>  ./hbase-1.2.6/bin/ start-hbase.sh start master

 

其他节点,有个别节点没有启动HRegionserver,则单独启动

  >  ./hbase-1.2.6/bin/hbase-daemon.sh start regionserver

失败可改大时间(需要集群时间一致,不然会报错!!

hbase的hbase-site.xml配置文件下添加hbase.master.maxclockskew

++f379cs3h4LwQQAEQAAEQOCNCHzdxz6a92jqaORvlDy4CgIgAAIgAAIXgX8BZHxQqy98zKwAAAAASUVORK5CYII=

AQUejIulSrshAAAAAElFTkSuQmCC

可访问地址

   主Hmaster、备:Hmaster、HRegionServer,其他:HRegionServer

   Master:16010、Slave1:16010

安装spark

cluster模式和client模式

cluster模式:Driver程序在YARN中运行,Driver所在的机器是随机的,应用的运行结果不能在客户端显示只能通过yarn查看,所以最好运行那些将结果最终保存在外部存储介质(如HDFS、Redis、Mysql)而非stdout输出的应用程序,客户端的终端显示的仅是作为YARN的job的简单运行状况。

client模式:Driver运行在Client上,应用程序运行结果会在客户端显示,所有适合运行结果有输出的应用程序(如spark-shell)

spark on Standalone

bin/spark-submit --master spark://master:6066 --deploy-mode cluster  --class org.apache.spark.examples.SparkPi examples/jars/spark-examples_2.11-2.3.2.jar 1000 --num-executors 3

bin/spark-submit --master spark://master:7077 --class org.apache.spark.examples.SparkPi examples/jars/spark-examples_2.11-2.3.2.jar 1000 --num-executors 3

spark on yarn

启动HDFS和YARN(不用启动master和woker),在client节点配置中spark-env.sh添加JDK和HADOOP_CONF_DIR目录,Spark程序将作为yarn的客户端用户提交任务。HADOOP_CONF_DIR是Saprk On Yarn与StandAlone重要区别。

yarn-client和yarn-cluster提交任务的方式:

# --master yarn(默认client模式) 等价于 yarn-client(已弃用)和--master yarn --deploy-mode client

./bin/spark-submit --master yarn --driver-memory 1g --executor-memory 1g --executor-cores 2 --class org.apache.spark.examples.SparkPi examples/jars/spark-examples_2.11-2.3.2.jar 1000

./bin/spark-submit --master yarn --deploy-mode cluster --class org.apache.spark.examples.SparkPi examples/jars/spark-examples_2.11-2.3.2.jar 1000

# 如果按照集群cluster的方式提交任务,--num-executors 3也都是2,如果客户端,则三个exector都有任务。

先安装scala

root用户下的usr创建一个scala文件夹将scala安装包复制到其中然后解压

/etc/profile

40sMER1AOv0AAAAAElFTkSuQmCC

查看scala版本

  scala -version

解压spark,配置conf/spark-env.sh、slaves、spark-defaults.conf

spark-env.sh

export JAVA_HOME=/usr/java/jdk1.8.0_141

export SCALA_HOME=/usr/scala/scala-2.13.6

export HADOOP_HOME=/home/kfs/hadoop-2.8.4

export HADOOP_CONF_DIR=/home/kfs/hadoop-2.8.4/etc/hadoop

export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=master:2181,slave1:2181,slave2:2181 -Dspark.deploy.zookeeper.dir=/spark"

 

slaves

下面有的,就会运行woker,一般master运行worker

 

将spark拷贝到其他节点  /etc/profile

scp -r spark-2.3.0-bin-hadoop2.7/ slave1:/home/kfs/spark-2.3.0-bin-hadoop2.7/

 

启动spark集群

./sbin/start-all.sh

启动不起来一般就是slaves或者是spark-env.sh配置错了。

备用的运行:   sbin/start-master.sh

查看master:8080

master:8080和http://master:8088/cluster   (一个会显示alive,一个是standby)

如果需要看历史

cp spark-defaults.conf.template spark-defaults.conf

需要记住三个字段

spark.eventLog.dir          hdfs://ns1/ sparklog

spark.history.fs.logDirectory  hdfs://ns1/sparklog

spark.yarn.historyServer.address  master:18080

基于centos7的hadoop2.7、zookeeper3.5、hbase1.3、spark2.3、scala2.11、kafka2.11、hive3.1、flume1.8、sqoop1.4组件部署_第14张图片

 

hdfs创建目录

r75ufN0eH+dgLOm4rttjEAgdUEHljPD3RpNXX0QQACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEIAABCAAAQhAAAIQgAAEIAABCEAAAhCAAAQgAAEIQAACEHgLAn8AP7F0hjGkV1AAAAAASUVORK5CYII=

X46rvIB3O0CApiIAACIAACn5UA5uhnjRzsBgEQAAEQeHkC+Pnoy4cYDoIACIAACBwkgDl6EC5UgwAIgAAIvDyBfwEIIIVwd8gqlwAAAABJRU5ErkJggg==

实操测试

./spark-submit --class org.apache.spark.examples.SparkPi --master yarn-client --executor-memory 2G --num-executors 2 ../examples/jars/spark-examples_2.11-2.3.2.jar 100

如果报错:Spark context stopped while waiting for backend,则修改hadoop/yarn-site.xml,重启hadoop

rgQSUAAAAASUVORK5CYII=

同时检查conf/spark-env.sh

基于centos7的hadoop2.7、zookeeper3.5、hbase1.3、spark2.3、scala2.11、kafka2.11、hive3.1、flume1.8、sqoop1.4组件部署_第15张图片

运行成功后,可以在18080查看。

(以上都是针对yarn的情况,Standalone比较简单,但是env.sh和conf都需要修改!)

安装kafka(除了主 都需要)

基于centos7的hadoop2.7、zookeeper3.5、hbase1.3、spark2.3、scala2.11、kafka2.11、hive3.1、flume1.8、sqoop1.4组件部署_第16张图片

 

解压缩搜,修改配置文件server.properties,注意该文件不同的主机不同的配置

broker.id=0

port=9092

log.dirs=/home/data/kafka-data/log-0

zookeeper.connect=localhost:2181

#日志保存天数(3天或者更短)

 

新建文件夹/home/data/kafka-data/log-0 ,scp后,每台对应修改host.name、broker.id

启动kakfa服务(除主外都启动)

./bin/kafka-server-start.sh config/server.properties &

测试

# 创建topic

kafka/bin/kafka-topics.sh --create --zookeeper slave1:2181 --replication-factor 2 --partitions 1 --topic lztest

# 创建消费者

kafka/bin/kafka-console-consumer.sh --zookeeper slave1:2181 --topic lztest --from-beginning

# 创建生产者

kafka/bin/kafka-console-producer.sh --broker-list slave1:9092 --topic lztest

# 测试直接在生产者输入内容,即可在消费者看到数据

安装hive (一台即可)

与hbase区别

基于centos7的hadoop2.7、zookeeper3.5、hbase1.3、spark2.3、scala2.11、kafka2.11、hive3.1、flume1.8、sqoop1.4组件部署_第17张图片基于centos7的hadoop2.7、zookeeper3.5、hbase1.3、spark2.3、scala2.11、kafka2.11、hive3.1、flume1.8、sqoop1.4组件部署_第18张图片

排查原来的数据库是否存在并卸载,重新安装Mysql

卸载

 

安装

rpm安装包

rpm -ivh mysql-(common/community-lib/community-client/community-server)-8.0.1.rpm

绿色版

https://blog.csdn.net/qq_40053836/article/details/104113347

(root)tar -zxvf 解压到  /usr/local/mysql8.0.11下载,在目录下创建log、data文件夹

检查创建mysql用户和mysql组:

      useradd mysql

  • 给文件夹修改用户和组

chgrp -R mysql mysql8.0.11/

chown -R mysql mysql8.0.11/

  • 初始化mysql(要用绝对路径)

./bin/mysqld --initialize --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/

初始化成功后后面会出现密码。

  • 在etc下面创建我们的配置文件和运行参数文件

配置文件

touch /etc/my.cnf

运行参数文件

vi /etc/my.cnf

基于centos7的hadoop2.7、zookeeper3.5、hbase1.3、spark2.3、scala2.11、kafka2.11、hive3.1、flume1.8、sqoop1.4组件部署_第19张图片

  •  启动服务

mysql/support-files/mysql.server start

如果报错/tmp/xx.sock,则创建一个软连接到报错的路径上:

ln -s /usr/local/mysql-8.0.11/mysql.sock /tmp/mysql.sock,再启动即可。

  • 登录到mysql,修改root密码和Host

ALTER(create) USER 'root'@'localhost' IDENTIFIED BY 'lz..';

update user set host='%' where user='root';

FLUSH PRIVILEGES;

  • 创建hive数据库,并修改编码

mysql>drop database hive;

mysql>create database hive;

mysql>ALTER DATABASE hive character set latin1;

创建一个hive的用户并设置权限(要不要都行,可以在hive配置文件用着root)

hive 配置(conf下新增hive-site.xml、mysql-connector-java-8.0.11.jar复制到hive的lib基于centos7的hadoop2.7、zookeeper3.5、hbase1.3、spark2.3、scala2.11、kafka2.11、hive3.1、flume1.8、sqoop1.4组件部署_第20张图片

将mysql-connector-java-8.0.11.jar复制到hive的lib目录下

/etc/profile

 export HIVE_HOME=/home/kfs/apache-hive-2.3.2-bin

 :$HIVE_HOME/bin:$HIVE_HOME/conf

启动hive 服务

初始化元数据库

bin/schematool -initSchema -dbType mysql -verbose

 ./bin/hive --service metastore &

./bin/hive –service hiveserver2 &

 查看jps有两个RunJar

基于centos7的hadoop2.7、zookeeper3.5、hbase1.3、spark2.3、scala2.11、kafka2.11、hive3.1、flume1.8、sqoop1.4组件部署_第21张图片

 

实操

启动hive

/bin/hive 

show tables;

create table test1(a string,b int)

show tables;

优化

数据倾斜的负载均衡

数据倾斜:就是大量的相同key被partition分配到一个分区里,map /reduce程序执行时,reduce节点大部分执行完毕,但是有一个或者几个reduce节点运行很慢,导致整个程序的处理时间很长。

办法:增加jvm内存、增加reduce的个数、自定义分区partition、重新设计key、使用combinner合并(map red之间)。

> hive

> set hive.groupby.skewindata=true;

默认该参数的值为false,表示不启用,要启用时,可以set hive.groupby.skewindata=ture;进行启用。

当启用时,能够解决数据倾斜的问题,但如果要在查询语句中对多个字段进行去重统计时会报错。

部署报错

下面的两个报错气都都是要做的

启动服务报错MetaException(message:Version information not found in metastore. )

1、配置文件加上

hive.metastore.schema.verification false

2、mysql中hive数据库的编码

mysql> alter database hive character set latin1;

hive中创建数据库失败Error: Table 'CTLGS' already exists (state=42S01,code=1050)

手动初始化元数据库

bin/schematool -initSchema -dbType mysql -verbose

"Host '192.168.2.129' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'"

mysql root的错误链接次数已满,运行:./bin/mysqladmin  -uroot -p  -h localhost flush-hosts

配置文件需要确保用户具备%的host

Error: Table 'CTLGS' already exists (state=42S01,code=1050)

这是再次执行格式化元数据(bin/schematool -initSchema -dbType mysql -verbose)的报错,可以删掉mysql的hive数据库重建,再执行格式化元数据库就不会报错。也可以直接启动hive服务进行使用。

安装Flume (除了主外都需要)

数据源-> source -> channel -> sink

解压缩后,编辑两个文件conf/flume-env.sh、conf/flume-conf.properties

flume-env.sh

cp flume-env.sh.template flume-env.sh

export JAVA_HOME=/usr/java/jdk1.8.0_141

flume-conf.properties

基于centos7的hadoop2.7、zookeeper3.5、hbase1.3、spark2.3、scala2.11、kafka2.11、hive3.1、flume1.8、sqoop1.4组件部署_第22张图片 

scp -r /home/kfs/apache-flume-1.8.0-bin/ slave2:/home/kfs/

启动flume

./bin/flume-ng agent --conf ./conf/ --conf-file ./conf/flume-conf.properties --name agent -Dflume.root.logger=INFO,console -Dflume.monitoring.type=http -Dflume.monitoring.port=12345

ZhUSM01ZpyEAAAAASUVORK5CYII=

启动成功

ps -aux | grep flume

ps -aux | grep flume | awk '{print $2}' | xargs kill

与kafka交互配置

基于centos7的hadoop2.7、zookeeper3.5、hbase1.3、spark2.3、scala2.11、kafka2.11、hive3.1、flume1.8、sqoop1.4组件部署_第23张图片

 

# 在matser运行flume

./bin/flume-ng agent --conf ./conf/ --conf-file ./conf/flume-conf.properties --name agent -Dflume.root.logger=INFO,console  -Dflume.monitoring.type=http -Dflume.monitoring.port=12345

# 在slave1创建topic

kafka/bin/kafka-topics.sh --create --zookeeper master:2181,slave1:2181,slave2:2181 --replication-factor 3 --partitions 1 --topic cmcc

# 查看有没有生成目标topic

bin/kafka-topics.sh --list --zookeeper hadoop02:2181

# 在slave2创建消费者,消费数据

bin/kafka-console-consumer.sh --bootstrap-server slave1:9092 --topic topicName --from-beginning

# 生产者:./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic first_topic

# 另起一个ssh,telnet master 4444 ,输入内容即可在slave2看到数据,在slave1也有topic数据的新增。

目录hdfs存入

基于centos7的hadoop2.7、zookeeper3.5、hbase1.3、spark2.3、scala2.11、kafka2.11、hive3.1、flume1.8、sqoop1.4组件部署_第24张图片

 

=左右不能有空格,DataStream这样hdfs的文件就不会有乱码。

# 在master 新建/data/flume-data/spooldir文件夹,hdfs上新建/flume/events/21-8-4

hdfs dfs -mkdir /flume/events

# 在master 运行flume

./bin/flume-ng agent --conf ./conf/ --conf-file ./conf/flume-conf.properties --name agent -Dflume.root.logger=INFO,console  -Dflume.monitoring.type=http -Dflume.monitoring.port=12345

windows上telnet master 5555

输入一些内容即可在hdfs上看到数据

# 在master的flume/data文件夹下随便写入一些数据到一个文件下

echo "Hello Flume 111 !!!" > file1.txt

# 可以看到flume有日志输出到shell上,通过网页50070或者hdfs命令可以查看数据

hdfs dfs -cat /flume/FlumeData.1627392071366

文件下沉到hdfs

只需要修改两行

# Describe/configure tail -F source1

a1.sources.r1.type=exec

a1.sources.r1.command =tail -F /export/taillogs/access_log

failover和负载均衡load_balancer

主节点(采集数据source)                                 slave1、slave2下沉到hdfs ​

基于centos7的hadoop2.7、zookeeper3.5、hbase1.3、spark2.3、scala2.11、kafka2.11、hive3.1、flume1.8、sqoop1.4组件部署_第25张图片 基于centos7的hadoop2.7、zookeeper3.5、hbase1.3、spark2.3、scala2.11、kafka2.11、hive3.1、flume1.8、sqoop1.4组件部署_第26张图片

安装Sqoop

在备1配置运行即可

解压,配置conf/sqoop-env.sh

cp sqoop-env-template.sh  sqoop-env.sh

 

.jar包的移动

将sqoop-1.4.7.jar复制到 $HADOOP_HOME/share/hadoop/mapreduce/

将JDBC.jar包拷贝到sqlserver和MySQL分别需要用到的jar包拷贝至lib下(自己选择拷贝什么jar)

./bin/sqoop list-databases --connect jdbc:mysql://slave1:3306/ --username root --password lz..

bin/sqoop import --connect jdbc:mysql://slave1:3306/hive --username root --password lz.. --table TBLS  --columns id,name,sex -m 1 --target-dir '/sqoop/hive'

你可能感兴趣的:(大数据平台运维,hadoop,大数据,spark,flume,kafka)