大数据集群搭建

 

NN-1

NN-2

DN

 

 

 

 

 

 

 

 

 

 

 

Node001

1

 

 

 

 

 

 

 

 

 

 

 

 

 

Note002

 

1

1

 

 

 

 

 

 

 

 

 

 

 

Note003

 

 

1

 

 

 

 

 

 

 

 

 

 

 

Note004

 

 

1

 

 

 

 

 

 

 

 

 

 

 

                          1-1hdfs完全分布式)

 

 

NN-1

NN-2

DN

ZK

ZKFC

JNN

 

 

 

 

 

 

 

 

Node001

1

 

 

 

1

1

 

 

 

 

 

 

 

 

Note002

 

1

1

1

1

1

 

 

 

 

 

 

 

 

Note003

 

 

1

1

 

1

 

 

 

 

 

 

 

 

Note004

 

 

1

1

 

 

 

 

 

 

 

 

 

 

1-2hdfs高可用分布式)

 

 

 

NN-1

NN-2

DN

ZK

ZKFC

JNN

RS

NM

 

 

 

 

 

 

Node001

1

 

 

 

1

1

 

 

 

 

 

 

 

 

Note002

 

1

1

1

1

1

 

1

 

 

 

 

 

 

Note003

 

 

1

1

 

1

1

1

 

 

 

 

 

 

Note004

 

 

1

1

 

 

1

1

 

 

 

 

 

 

                         1-3hdfs+yarn(mapreduce) 高可用分布式)

 

 

 

NN-1

NN-2

DN

ZK

ZKFC

JNN

RS

NM

Hive

用户

 

 

 

 

 

Node001

1

 

 

 

1

1

 

 

1(mysql)

 

 

 

 

 

Note002

 

1

1

1

1

1

 

1

1(hive)

 

 

 

 

 

Note003

 

 

1

1

 

1

1

1

 

 

 

 

 

 

Note004

 

 

1

1

 

 

1

1

 

 

 

 

 

 

                         1-4hdfs+yarn(mapreduce)+hive单用户)

 

 

NN-1

NN-2

DN

ZK

ZKFC

JNN

RS

NM

Hive

用户

Hive多用户

 

 

 

 

Node001

1

 

 

 

1

1

 

 

1mysql服务器)

 

 

 

 

 

Note002

 

1

1

1

1

1

 

1

1hive

 

 

 

 

 

Note003

 

 

1

1

 

1

1

1

 

1(服务器)

 

 

 

 

Note004

 

 

1

1

 

 

1

1

 

1(客户端)

 

 

 

 

                       1-5hdfs+yarn+hive单用户+hive多用户)

 

 

 

NN-1

NN-2

DN

ZK

ZKFC

JNN

RS

NM

Hive

用户

Hive多用户

Hmaster伪分布

 

Node001

1

 

 

 

1

1

 

 

1

 

1

 

Note002

 

1

1

1

1

1

 

1

1

 

 

 

Note003

 

 

1

1

 

1

1

1

 

1(服务器)

 

 

Note004

 

 

1

1

 

 

1

1

 

1(客户端)

 

 

                       1-6hdfs+yarn+hive单用户+hive多用户+Hmasterhbase))

 

 

 

NN-1

NN-2

DN

ZK

ZKFC

JNN

RS

NM

Hive

Hive

Hmaster

Hmaster

Backup-master

Regionserver

Node001

1

 

 

 

1

1

 

 

1

 

1

1

 

 

Note002

 

1

1

1

1

1

 

1

1

 

 

 

1

 

Note003

 

 

1

1

 

1

1

1

 

1

 

 

 

1

Note004

 

 

1

1

 

 

1

1

 

1

 

 

 

1

             1-7hdfs+yarn+hive单用户+hive多用户+Haster完全(标红的表示用不上的

 

 

 

NN-1

NN-2

DN

ZK

ZKFC

JNN

RS

NM

Hive

Hmaster

Backup-master

Regionserver

nginx

flume

Node001

1

 

 

 

1

1

 

 

 

1

 

 

 

 

Note002

 

1

1

1

1

1

 

1

 

 

1

 

1

1

Note003

 

 

1

1

 

1

1

1

1

 

 

1

 

 

Note004

 

 

1

1

 

 

1

1

1

 

 

1

 

 

             1-8 hdfs+yarn+hive单用户+hive多用户+Haster完全+nginx+flume

 

 

 

dev_zookeeper

Nimbus

core

supervisor

logviewer

 

 

 

 

 

 

 

 

 

Node001

1

1

1

1

1

 

 

 

 

 

 

 

 

 

Note002

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Note003

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Note004

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                          1-9(搭建storm伪分布式)

 

 

dev_zookeeper

Nimbus

core

supervisor

logviewer

 

 

 

 

 

 

 

 

 

Node001

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Note002

1

 

 

1

 

 

 

 

 

 

 

 

 

 

Note003

1

 

 

1

 

 

 

 

 

 

 

 

 

 

Note004

1

1

1

 

 

 

 

 

 

 

 

 

 

 

                          1-10(搭建storm完全分布式)

 

 

 

 

看什么是数据结构、数据结构有哪些种、八种算法、

 

 

 

 

 

一:最终集群中各个节点服务如下:

1.       Node001NameNodeDFSZKFailoverController JournalNodeHMaster

2.       Note002NameNodeDataNodeQuorumPeerMainDFSZKFailoverControllerJournalNodeNodeManagerHMaster

3.       Note003DataNode QuorumPeerMainJournalNodeResourceManager HRegionServer

4.       Note004DataNodeQuorumPeerMainResourceManagerNodeManagerHRegionServer

 

 

 

二:启动集群前请注意:

1.cd /etc/profile文件中的ip设置

2.cd /etc/posts中进行一一映射。使用ping命令验证。

3.本地电脑C:\Windows\System32\drivers\etc路径下进行一一映射

4.关闭防火墙

5.各个虚拟机时间统一:使用ntpdate时间服务器校对时间

6.免密钥设置

7.环境变量添加:etc/profile

8.配置文件修改

 

三:配置文件配置好之后,每次启动集群时候先后顺序:

1.       格式化hdfs:产生一个集群idhdfs namenode -format(第一次之后以后不需要了)

2.       第二三四台其中zk(为了监控namenode):zkServer.sh start   ||   zkServer.sh status

3.       第一二三台启动jnn(为了监控datanode):hadoop-daemon.sh start journalnode

4.       第一台启动namenodehadoop-daemon.sh start namenode(第一台启动namenode

5.       第二台namenode同步第一台:hdfs namenode  -bootstrapStandby(以后也是执行hadoop-daemon.sh start namenode

6.       234台格式化zkfchdfs zkfc -formatZK(第一次格式化之后以后不要格式化了)。

查看zkfczkCli.sh

7.       启动hdfs集群:start-dfs.sh

8.       此时各个集群服务如下:

第一台:jouenalnodenamenodeDFSZKF

第二台:jouenalnodenamenodeDFSZKFdatanodeQuormPeerMain

第三台:jouenalnodedatanodeQuormPeerMain

第四台:datanodeQuormPeerMain

9.       (选的是第一台)启动yarnstart-yarn.sh

10.   (第四台,然后第三台。说明第四台是主)启动resourcemanager

yarn-daemon.sh start resourcemanager

11.   不管是伪分布式还是完全分布式,.启动第一台hbasestart-hbase.sh。输入hbase shell命令进入。

12.   第二台Nginx服务启动:service nginx  start

13.   hive单用户模式:mysql安装在第一台虚拟机上了,输入mysql -u root –p在输入密码即可,hive安装在第二台虚拟机上了(hive安装目录下配置了mysqljar),输入 hive尽可进入。Hive多用户模式:第一台mysql服务器启动:service mysqld status|start。在第三台启动服务: hive --service metastore。在第四台上输入hive即可进入。

14.   监控日志输出:在安装好nginxflume的第二台虚拟机上,开启flume输入命令:flume-ng agent -n a1 -f option6 -Dflume.root.logger=INFO,console。此时他就会监控nginx服务器中的日志文件了。我们可以在第二台虚拟机上实时查看日志输出情况,在第二台上输入命令:tail -F /opt/data/access.log。我们还可以登录node001:60070,查看hdfs中是否有新文件产生,新文件路径为:hdfs://mycluster/log/%Y%m%d。以上的这些信息都来自fluem配置文件中的/home/dir4flume/option6中的配置。

 

 

四:各个安装软件说明:

1.       Hadoop安装目录:cd /opt/sxt/hadoop-2.6.5/etc/目录下,这里有三个文件分别是hadoophadoop-fullhadoop-local,这三个文件都是复制而来的。其中hadoop-local是单机的hdfs伪分布式,hadoop-full是完全分布式,hadoop是高可用分布式。在运行hadoop的时候默认执行/opt/sxt/hadoop-2.6.5/etc/hadoop/bin。因此如果想运行哪种分布式只需把hadoop文件的名字更改即可。cd /opt/sxt/hadoop-2.6.5/etc/hadoop/hdfs-size.xml中有配置路径。

2.       HBase安装目录:Hbase是解压tar包进行安装的,tar包统一放在了/home/tools下面了,hbase安装目录为/home/hbase-0.98.12.1-hadoop2 /。我们需要修改的配置文件放在/home/hbase-0.98.12.1-hadoop2/conf下面了,/home/hbase-0.98.12.1-hadoop2/bin存放的是可执行文件,例如start-hbase.sh等命令。

3.       Protobuf用于对hbase中的列进行序列化和反序列化。用源码方式安装在第一台虚拟机上了。解压源码路径为home/tools/protobuf-2.5.0,安装路径为/usr/local/bin/protoc。安装好之后我们可以创建protoc可执行文件,然后就会在第一台虚拟机上面产生java类,导出之后放入eclipse中即可使用这个系统给生成的序列化和反序列化类了。

4.       Nginx服务器的安装:nginx服务器类似于tomcat,安装目录为/opt/sxt/nginx/

启动服务service nginx  start。查看服务service nginx statusss-nal查看80进程,然后就可以客户端发送请求了,由于/usr/local/nginx/配置了nginx.conf中配置好了,因此请求路径可以保存到nginx服务器中的/opt/data/ access.log这个文件里。输入tail -f access.log命令监控控制台的输出。(现在nginx服务器使用的是第二台)

5.       flume工具:flume工作是用来监控日志的,当它发现有新日志产生的时候就要把日志内容保存到hdfs文件系统中。并可以输入tail -F /opt/data/access.log来在控制台查看每次日志的输出情况。由于使用了tail命令,因此要保证flume工具要跟nginx服务器安装在同一台虚拟机上。

6.       storm伪分布式安装在第一台虚拟机上(因为他不需要zookeep)。

其中tar zxvf apache-storm-0.10.0.tar.gz  -C /opt/ 是把storm软件安装在了opt/storm目录下。Python安装在/home/tools/Python-2.7.13这个目录下。Jdk我们以前就安装好了。

下面分别启动ZooKeeperNimbusUIsupervisorlogviewer

./bin/storm dev-zookeeper >> ./logs/zk.out 2>&1 &      

./bin/storm nimbus >> ./logs/nimbus.out 2>&1 &      

./bin/storm ui >> ./logs/ui.out 2>&1 &              

 ./bin/storm supervisor >> ./logs/supervisor.out 2>&1 &     

 ./bin/storm logviewer >> ./logs/logviewer.out 2>&1 &     

后台服务如下:logviewerdev_zookeepernimbuscoresupervisor

登录浏览器:node001:8080进入storm页面

7.           storm完全分布式安装在第二三四台虚拟机上,其中第四台为主节点,第二三台为从节点。下面是启动服务:

./bin/storm dev-zookeeper >> ./logs/zk.out 2>&1 &      (全部节点二三四台)

./bin/storm nimbus >> ./logs/nimbus.out 2>&1 &       (主节点第四台nimbus

./bin/storm ui >> ./logs/ui.out 2>&1 &                (主节点第四台core

 ./bin/storm supervisor >> ./logs/supervisor.out 2>&1 &     (从节点第二三台supervisor)

 ./bin/storm logviewer >> ./logs/logviewer.out 2>&1 &      (在完全分布式上没执行这个)

最后:在浏览器上http://note004:8080/进入storm完全分布式。

8.       kafka完全分布式:kafka的完全分布式在第二三四台虚拟机上搭建的,因为第二三四台上有zookeep,而kafka集群需要zookeep

第一:启动zookeepkafkazkServer.sh start

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

第二:启动topicbin/kafka-topics.sh --zookeeper note002:2181,note003:2181,note004:2181 --create --replication-factor 2 --partitions 3 --topic test

   第三:启动生产者:bin/kafka-console-producer.sh --broker-list note002:9092,note003:9092,note004:9092 --topic test

   第四:启动消费者:bin/kafka-console-consumer.sh --zookeeper note002:2181,note003:2181,note004:2181 --from-beginning --topic test

 

9.       sparkstandalone集群)集群:使用第一二三台虚拟机搭建,其中第一台为主节点master,第二三台为从节点workspark安装包放在了home/tools下,安装路径为/opt下。启动的时候在第一台虚拟机中的/opt/spark-1.6.0/sbin目录下执行./start-all.sh,然后在浏览器上输入node001:8080

提交任务的机器叫做客户端,因为前三台机器做了一个集群,因此把note4作为客户端。node4与前三台无关,因为前三台在搭建集群的时候配置文件就没配置node4的信息。为了当客户端,只需把node1中的安装包拷给note4即可。

10sparkstandalone集群)集群的高可用:standby节点配置为note002,在node0001上启动集群/start-all.sh,并在note002上启动standby./start-master.sh

 

 

五:集群启动后客户端访问端口ss -nal

Hdfs端口:50070

Mapreduce端口:8088

Hbase端口:60010

zookeep的端口:2181

nginx(功能类似tomcat)的端口:80

hdfs:node001:50070

hbase:node001:60010

mapreduce:note004:8088

hive端口:9083

hive:service mysqld status

nginx服务:note002上面,路径/usr/local/nginx/

storm流式计算:端口8080

 

 

六:各集群启动服务情况(各启动服务命令都在软件安装目录下的bin目录下能找到此文件)。

1.       1-1启动服务如下:

1.1.启动主namenodehadoop-daemon.sh start namenode

1.2.启动HDFS集群:start-dfs.sh

2.  1-2启动服务如下:

2.1.启动zkzkServer.sh start   ||   zkServer.sh status

2.2.启动JNNhadoop-daemon.sh start journalnode

2.3.启动主namenodehadoop-daemon.sh start namenode

2.4.启动HDFS集群:start-dfs.sh

3.  1-3启动服务如下:

    3.1. 启动zkzkServer.sh start   ||   zkServer.sh status

3.2. 启动JNNhadoop-daemon.sh start journalnode

3.3. 启动主namenodehadoop-daemon.sh start namenode

3.4. 启动HDFS集群:start-dfs.sh

3.5. 启动yarnstart-yarn.sh

3.6. 手动启动resourcemanageryarn-daemon.sh start resourcemanager

4.  1-4启动服务如下:在3的基础上,

无需启动其他服务,直接在本虚拟机上输入hive进入sql命令窗口即可

5.  1-5启动服务如下:在3的基础上,

5.1. note003启动hive服务端程序:hive --service metastore

5.2 .note004输入hive进入sql命令窗口。

6.  1-6启动服务如下:在3的基础上

  6.1. 启动HBasestart-hbase.sh

 

 

 

 

七:各种集群分布情况详情说明:

1.       hdfs伪分布式搭建在node001一台虚拟机上,不做解释。

2.       hdfs完全分布式分布式如图1-1所示:此时首次实现了namenode有主有备和datanode各个节点的负载均衡。

3.       hdfs高可用(HA)分布式如图1-2所示:主要是对namenode进行高可用,因此使用JNN小集群,客户端发送来的数据统一有JNN管理元数据信息,然后在往两个namenode中进行分发。由于两个NN数据完全一样,因此一旦主Active NN宕机,我们就可以启动Standby NN。但是此时还不是自动化管理。因此引入了zookeepzkfc。两个zkfc进程对两个NN进行监控,并把健康状态反馈给zookeep集群。

4.       hdfs高可用+yarn集群如图1-3所示:mapreduce阶段的集群配置包括ResourceManager

NodeManager 。此配置都是建立在yarn上面进行资源管理。读取HDFS中各个datanode节点的文件,每一行解析成一个<k,v>,最终将解析结果进行合并计算后返回给客户端。此时已完成了对数据分析的整个过程。

5.       由于mapreduce编程过程中需要重写map方法、reduce方法等众多方法,不适合非编程人员使用,因此引入了hive数据仓库,如图1-4所示:首先引入了单用户模式,安装mysql数据库和hive安装包后,就能进入hive窗口输入hql语句进行查询了,元数据存储在mysql数据库中。执行hql语句最后由hive数据仓库去做重写map方法和reduce方法的事情。

6.       单用户模式只能登陆一个客户端,因此引入了多用户模式,如图1-5所示:多用户模式中出现了客户端和服务器的概念。即多个客户端(安装mysql数据库)将请求(hql语句)会先发送到中间服务器(此服务器安装hive数据仓库)。中间服务器存放元数据信息,然后在由中间服务器通过元数据去hadoop集群中找到对应的节点服务器后自己执行mapreduce过程对数据进行分析。

7.       Hdfs是将文件分布在各个节点中,因此引入hbase对文件中的数据进行持久化操作。Hbase将生成表(主键、版本、列族、列名、列值),与此同时产生hbase中的文件。

Hbase伪分布式集群配置如图1-6所示:由于是在此linux一台虚拟机上面并非集群,因此就不需要namenodedatanode了。由于配置文件中默认使用了自带的zookeep,因此也无序配置zookeep了。好像jps查看服务的时候中只需有个hmaster服务就可以了。

node001作为hmaster的原因是此虚拟机无zookeep,让node001使用系统默认的zookeep就可以了。

8.       Hbase完全分布式配置如图1-7hmaster作为负载均衡器的主节点(如同namenode),backup- hamster作为备用节点,由于有zookeep的存在,此两个节点共同控制集群的高可用(注意:这里在配置文件里已经指明哪台是主节点哪台是从节点了)。Regionserver作为从节点(如同datanode)。

在配置的过程中,把hadoop的核心配置文件hdfs-site.xml拷贝到了hbase的配置目录下:home/hbase-0.98.12.1-hadoop2/conf。这样做的目的是因为hbase需要hdfs文件系统的支持、

9.        在项目练习过程中,客户端java代码传过来的数据的过程如下:web端发送请求à请求到达nginx服务器à请求日志保存到此nginx服务器的日志文件中àflume工具监控日志文件,发现日志文件中有输出的时候就接收日志文件并传给hdfs文件系统àhdfs文件系统中编写map放进行ETL数据清洗à清洗好的数据保存到hbase数据库中,此时保存了一份完整的数据à进入mapreduce进行数据分析à把分析结果传递给mysql数据库à使用web系统展示页面

如图1-8:由于flume工具需要接收nginx服务器使用tail传过来的数据,因此要求flume的安装与nginx的安装要在一台服务器。

 

 

 

******************以上是自己分布式集群的分布情况和常用命令*********************

*********************以下是自己对大数据常见知识的总结**************************

---------------------------------------------------------------------------------------------------------------------------------

第一、四种软件安装方式

1.       编译安装:需要人为安装与此软件相关的软件

(0).先准备yum源,可以是阿里的,可以是本地的(光盘):mount /dev/cdrom /mnt

(1).上传源码(home/tools/路径)包并解压protobuf-2.5.0.tar.gz(tar表示是个tar包,gz表示是个压缩包)解压到压缩包所在的当前目录:tar zxvf protobuf-2.5.0.tar.gz

解压目录为home/tools/protobuf-2.5.0。此目录下面有个configure目录和Makefile目录

(2).下载依赖包(执行命令后会下载并安装依赖包),下载的是一组:yum groupinstall Development tools –y

查询: yum groiplist yum groipinfo。依赖包安装好之后就有makefile目录了。

(3).预编译:预编译的目的是检查是否有错误,(找到当前目录/home/tools/protobuf-2.5.0下面的configer)执行 ./configure

(4).编译 (找的是makefile目录):make(如果编译完成之后就进行安make && make install )

(5).安装:make install 。安装成功后,之前的解压目录就没用了。

(6).查看安装目录:whereis protoc----输出/usr/local/bin/protoc

2.rpm安装:一般的安装都会装在这里,使用迷你光盘的

(1).自己先用xftp上传安装软件如jdk,然后使用rmp命令进行安装

(2)找到jdk安装包路径并执行:rmp -ivh jdk-7u67-linux-x64.rmp。执行之后默认安装到了user/java/jdk1.7.0下面了。

(3) -i是安装的意思,vh可以看安装过程。后面跟着jdk文件

3. tar包直接解压安装:

(1yum不需要人的干预了,直接把相关软件一起下载了

(2)windows中找个软件,直接解压使用:tar  zxfv hbase-0.98.12.1-hadoop-bin.tar.gz -C /home ,会在home下产生一个hbase文件夹,此文件夹里有个bin目录里面放的都是可执行文件,例如:hbase-daemon.sh,start-hbase.sh,stop-hbase.sh.hbase

4.yum安装:(使用3个多G的大光盘,解决缺包问题)

(1).yum install ipvsadm –y

 

第二:3mapreduce运行方式:

第三:hdfs工作流程(block、)

第四: mapreduce工作流程(关键词:split,map, combiner,shuffi,reduce, partitioner,kv,kvp)

第五::为什么引入hive数据仓库,hive的工作流程。

第六:为什么引入hbase非关系型数据库,hbase的工作流程。

第七:hbase与关系型数据库的差异

第十一: hive优化

第十二:hbase优化、

第十二:常见shel命令l

第十三:hive中常见hql命令

14yum源安装本地的,而非阿里的。

第十五:spark运行模式和步骤

第十六:sparkmapreduce的区别

第十七:

 

猜你喜欢

转载自1601844782.iteye.com/blog/2414193