目录
Hadoop
1.大数据特点:4V
2.Hadoop组成
3.hdfs主从节点
4.搭建集群
一、虚拟机环境准备
二、准备三台虚拟机(一、)
三、编写集群分发脚本xsync
四、集群部署规划
五、集群单点启动
六、SSH无密登录配置
5.hadoop运行模式
6.配置文件
7.NameNode格式化
8.免密登录SSH
(1)配置ssh
基本语法:ssh 登陆主机IP
(2)无密钥配置
(3) ssh文件夹下(~/.ssh)的文件功能解释
HA(高可用集群)
1.搭建ha集群
一、环境准备
二、规划集群
三、配置Zookeeper集群
四、配置HDFS-HA集群
五、启动HDFS-HA集群
六、配置HDFS-HA自动故障转移
2.HA作用
HDFS
1.hdfs块大小,原因
2.优缺点
(1)优点:
(2)缺点:
3.默认副本数量
4.黑白名单(谁更严格)
5.shell操作
MapReduce
1.mapreduce进程
2.序列化 text
3.mapreduce的编程规范
4.mapreuce框架
5.切片大小 ,原因
6.Shuffle
Yarn
1.yarn节点
2.资源调度器
(1)先进先出调度器(FIFO)
(2)容量调度器(Capacity Scheduler)
(3)公平调度器(Fair Scheduler)
Zookeeper
1.zookeeper选举机制
2.zookeeper端口号
Flume
1.流式架构
2.agent
(1)Sink
(2)Channel
(3)Event
Kafka
1.topic
Spark
1.算子
2.rdd
3.rdd,datafream,dateset三者关系
Tez
1.作用/优点
Hive
1.数据仓库是否擅长改操作
Hadoop
1.大数据特点:4V
2.Hadoop组成
3.hdfs主从节点
4.搭建集群
一、虚拟机环境准备
(1)克隆虚拟机
(2)修改克隆虚拟机的静态IP
(3)修改主机名
(4)关闭防火墙
(5)创建root用户
(6)配置root用户具有root权限
(7)在/opt目录下创建文件夹:
- 在/opt目录下创建module、software文件夹
- 修改module、software文件夹的所有者(chown root:root module/ software/
(8)安装JDK,如果有低于1.7的版本,先卸载该版本JDK,修改系统环境变量/etc/profile文件中的变量为现在的版本
(9)安装Hadoop,同样修改系统环境变量
二、准备三台虚拟机(一、)
三、编写集群分发脚本xsync
- 在/home/root目录下创建bin目录,并在bin目录下xsync创建文件
- 修改脚本 xsync 具有执行权限
四、集群部署规划
- 配置集群
核心配置文件:core-site.xml
HDFS配置文件:hadoop-env.sh、hdfs-site.xml
YARN配置文件:yarn-env.sh、yarn-site.xml
MapReduce配置文件:mapred-env.sh、mapred-site.xml
/opt/module/hadoop-2.7.2/etc/hadoop/slaves
- 在集群上分发配置好的Hadoop配置文件,并查看文件分发情况
五、集群单点启动
- 如果集群是第一次启动,需要格式化NameNode
- 在第一台主机上启动NameNode
- 在第二、三台主机上分别启动DataNode
六、SSH无密登录配置
- 生成公钥和私钥
- 将公钥拷贝到要免密登录的目标机器上
5.hadoop运行模式
本地模式、伪分布式、完全分布式
6.配置文件
核心配置文件:core-site.xml
HDFS配置文件:hadoop-env.sh、hdfs-site.xml
YARN配置文件:yarn-env.sh、yarn-site.xml
MapReduce配置文件:mapred-env.sh、mapred-site.xml
/opt/module/hadoop-2.7.2/etc/hadoop/slaves
7.NameNode格式化
(1)删除/opt/mudule/hadoop-2.7.2下的data和logs文件夹
(2) 重新格式化NameNode:hdfs namenode -format
8.免密登录SSH
(1)配置ssh
基本语法:ssh 登陆主机IP
- ssh连接时出现Host key verification failed的解决方法:直接输入yes
(2)无密钥配置
- 生成公钥和私钥:ssh-keygen -t rsa
- 将公钥拷贝到要免密登录的目标机器上:ssh-copy-id IP
(3) ssh文件夹下(~/.ssh)的文件功能解释
HA(高可用集群)
通过双NameNode消除单点故障,切换工作模式
1.搭建ha集群
一、环境准备
(1)修改IP
(2)修改主机名及主机名和IP地址的映射
(3)关闭防火墙
(4)ssh免密登录
(5)安装JDK,配置环境变量等
二、规划集群
三、配置Zookeeper集群
(1)解压安装zookeeper
(2)在/opt/module/zookeeper-3.4.10/这个目录下创建zkData
(3)重命名/opt/module/zookeeper-3.4.10/conf这个目录下的zoo_sample.cfg为zoo.cfg
(4)配置zoo.cfg文件
(5)在/opt/module/zookeeper-3.4.10/zkData目录下创建一个myid的文件
(6)编辑myid文件
(7)拷贝配置好的zookeeper到其他机器上,并分别修改myid文件中内容为3、4
(8)分别启动zookeeper:bin/zkServer.sh start
(9)查看状态:bin/zkServer.sh status
四、配置HDFS-HA集群
(1)在opt目录下创建一个ha文件夹,并修改所有者:chmod root:root ha
(2)将/opt/module/下的 hadoop-2.7.2拷贝到/opt/ha目录下
(3)配置hadoop-env.sh(JAVA_HOME环境变量)
(4)配置core-site.xml、hdfs-site.xml
(5)拷贝配置好的hadoop环境到其他节点
五、启动HDFS-HA集群
(1)在各个JournalNode节点上,输入以下命令启动journalnode服务:sbin/hadoop-daemon.sh start journalnode
(2)在[nn1]上,对其进行格式化,并启动:①bin/hdfs namenode -format②sbin/hadoop-daemon.sh start namenode
(3)在[nn2]上,同步nn1的元数据信息:bin/hdfs namenode -bootstrapStandby
(4)启动[nn2]:sbin/hadoop-daemon.sh start namenode
(5)查看web页面显示:IP:50070
(6)在[nn1]上,启动所有datanode:sbin/hadoop-daemons.sh start datanode
(7)将[nn1]切换为Active:bin/hdfs haadmin -transitionToActive nn1
(8)查看是否Active:bin/hdfs haadmin -getServiceState nn1
六、配置HDFS-HA自动故障转移
(1)启动
- 关闭所有HDFS服务:sbin/stop-dfs.sh
- 启动Zookeeper集群:bin/zkServer.sh start
- 初始化HA在Zookeeper中状态:bin/hdfs zkfc -formatZK
- 启动HDFS服务:sbin/start-dfs.sh
(2)验证
- 将Active NameNode进程kill:kill -9 namenode的进程id
- 将Active NameNode机器断开网络:service network stop
2.HA作用
- 故障检测:一个namenode宕机后,zookeeper会通知另一个namenode需要出发故障转移
- 现役NameNode选择
- ---健康监测
- ---ZooKeeper会话管理
- ---基于ZooKeeper的选择
HDFS
1.hdfs块大小,原因
(1)默认大小为128M(HAdoop2.x版本中)
(2)原因:
- HDFS的块设置太小,会增加寻址时间,程序一直在找块的开始位置
- 如果块设置的太大,从磁盘传输数据的时间会明显大于定位这个块开始位置所需的时间。导致程序在处理这块数据是会非常慢
2.优缺点
(1)优点:
- 容错性高
- 适合处理大数据
- 可构建在廉价机器上,通过多副本机制,提高可靠性
(2)缺点:
- 不适合低延时数据访问
- 无法高效的对大量小文件进行存储
- 不支持并发写入、文件随即修改
3.默认副本数量
4.黑白名单(谁更严格)
5.shell操作
(1)-help:输出这个命令参数
hadoop fs -help rm
(2)-ls: 显示目录信息
hadoop fs -ls /
(3)-mkdir:在HDFS上创建目录(-p:多级目录)
hadoop fs -mkdir -p /sanguo/shuguo
(4)-moveFromLocal:从本地剪切粘贴到HDFS
[root@hadoop102 hadoop-2.7.2]$ touch kongming.txt
[root@hadoop102 hadoop-2.7.2]$ hadoop fs -moveFromLocal ./kongming.txt /sanguo/shuguo
(5)-appendToFile:追加一个文件到已经存在的文件末尾
[root@hadoop102 hadoop-2.7.2]$ touch liubei.txt
[root@hadoop102 hadoop-2.7.2]$ vi liubei.txt
输入
san gu mao lu
[root@hadoop102 hadoop-2.7.2]$ hadoop fs -appendToFile liubei.txt /sanguo/shuguo/kongming.txt
(6)-cat:显示文件内容
root@hadoop102 hadoop-2.7.2]$ hadoop fs -cat /sanguo/shuguo/kongming.txt
(7)-chgrp 、-chmod、-chown:Linux文件系统中的用法一样,修改文件所属权限
[root@hadoop102 hadoop-2.7.2]$ hadoop fs -chmod 666 /sanguo/shuguo/kongming.txt
[root@hadoop102 hadoop-2.7.2]$ hadoop fs -chown root:root /sanguo/shuguo/kongming.txt
(8)-copyFromLocal:从本地文件系统中拷贝文件到HDFS路径去
[root@hadoop102 hadoop-2.7.2]$ hadoop fs -copyFromLocal README.txt /
(9)-copyToLocal:从HDFS拷贝到本地
[root@hadoop102 hadoop-2.7.2]$ hadoop fs -copyToLocal /sanguo/shuguo/kongming.txt ./
(10)-cp :从HDFS的一个路径拷贝到HDFS的另一个路径
[root@hadoop102 hadoop-2.7.2]$ hadoop fs -cp /sanguo/shuguo/kongming.txt /zhuge.txt
(11)-mv:在HDFS目录中移动文件
[root@hadoop102 hadoop-2.7.2]$ hadoop fs -mv /zhuge.txt /sanguo/shuguo/
(12)-get:等同于copyToLocal,就是从HDFS下载文件到本地
[root@hadoop102 hadoop-2.7.2]$ hadoop fs -get /sanguo/shuguo/kongming.txt ./
(13)-getmerge:合并下载多个文件,比如HDFS的目录 /user/root/test下有多个文件:log.1, log.2,log.3,...
[root@hadoop102 hadoop-2.7.2]$ hadoop fs -getmerge /user/root/test/* ./zaiyiqi.txt
(14)-put:等同于copyFromLocal
[root@hadoop102 hadoop-2.7.2]$ hadoop fs -put ./zaiyiqi.txt /user/root/test/
(15)-tail:显示一个文件的末尾
[root@hadoop102 hadoop-2.7.2]$ hadoop fs -tail /sanguo/shuguo/kongming.txt
(16)-rm:删除文件或文件夹
[root@hadoop102 hadoop-2.7.2]$ hadoop fs -rm /user/root/test/jinlian2.txt
(17)-rmdir:删除空目录
[root@hadoop102 hadoop-2.7.2]$ hadoop fs -mkdir /test
[root@hadoop102 hadoop-2.7.2]$ hadoop fs -rmdir /test
(18)-du统计文件夹的大小信息
[root@hadoop102 hadoop-2.7.2]$ hadoop fs -du -s -h /user/root/test
2.7 K /user/root/test
[root@hadoop102 hadoop-2.7.2]$ hadoop fs -du -h /user/root/test
1.3 K /user/root/test/README.txt
15 /user/root/test/jinlian.txt
1.4 K /user/root/test/zaiyiqi.txt
(19)-setrep:设置HDFS中文件的副本数量
[root@hadoop102 hadoop-2.7.2]$ hadoop fs -setrep 10 /sanguo/shuguo/kongming.txt
MapReduce
1.mapreduce进程
2.序列化 text
3.mapreduce的编程规范
用户编写的程序分成三个部分:Mapper、Reducer和Driver。
4.mapreduce框架
5.切片大小 ,原因
(1)默认大小为128M
(2)原因:
切片只是对数据块进行切割,块大小默认为128M,切大切小都会存在跨节点切片的情况
6.Shuffle
Map方法之后,Reduce方法之前的数据处理过程称之为Shuffle
Yarn
1.yarn节点
ResourceManager、NodeManager
2.资源调度器
FIFO、Capacity Scheduler和Fair Scheduler
(1)先进先出调度器(FIFO)
(2)容量调度器(Capacity Scheduler)
(3)公平调度器(Fair Scheduler)
Zookeeper
1.zookeeper选举机制
半数选举:集群中半数以上机器存活,集群可用。所以Zookeeper适合安装奇数台服务器。与myid有关
2.zookeeper端口号
2181
Flume
1.流式架构
Flume是Cloudera提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统。Flume基于流式架构,灵活简单
2.agent
Agent 是一个 JVM 进程,它以事件的形式将数据从源头送至目的
Agent 主要有三个组成部分,Source、Channel、Sink
(1)Sink
Sink 不断地轮询 Channel 中的事件且批量移除它们,并将这些事件批量写入到存储或索引系统、或者被发送到另一个 Flume Agent。
Sink 组件的目的地包括 hdfs、logger、avro、thrif、file、HBase、solr、自定义
(2)Channel
Channel 是位于 Source 和 Sink 之间的缓冲区。因此,Channel 允许 Source 和 Sink 运作在不同的速率上。Channel 是线程安全的,可以同时处理几个 Source 的写入操作和几个 Sink 的读取操作
Flume 常用的 Channel:Memory Channel 和 File Channel
(3)Event
传输单元,Flume数据传输的基本单元,以Event的形式将数据从源头送至目的地。Event由Header和Body两部分组成,Header用来存放该event的一些属性,为K-V结构,Body用来存放该条数据,形式为字节数组
Kafka
1.topic
Topic :可以理解为一个队列,生产者和消费者面向的都是一个topic
Spark
1.算子
2.rdd
RDD(Resilient Distributed Dataset)叫做弹性分布式数据集,是Spark中最基本的数据(计算)抽象。代码中是一个抽象类,它代表一个不可变、可分区、里面的元素可并行计算的集合。
3.rdd,datafream,dateset三者关系
1. RDD是最基础的数据类型,在向上转换时,需要添加必要的信息;
转DataFrame:需要添加结构信息并加上列名 toDF("id","name")
转DataSet:需要添加类型信息,写样例类 map(x=>{Emp(x)}).toDS()
2. DataFrame在向上转换时,本身包含结构信息,只添加类型信息即可;
转DataSet:先写样例类,as[Emp]
转RDD:df.rdd
3. DataSet作为最上层的抽象,转换其他对象直接可以往下转;
转DataFrame:ds.toDF
转RDD:ds.rdd
RDD与DF/DS转换都需要引入(import spark.implicits)
Tez
1.作用/优点
- 优点:Tez可以将多个有依赖的作业转换为一个作业,这样只需写一次HDFS,且中间节点较少,从而大大提升作业的计算性能。
- 作用: