zookeeper集群的角色和作用?
Leader:Zookeeper集群工作的核心,事务请求(写操作)的唯一调度和处理者,保证集群事务处理的顺序性,集群内各个服务器的调度者;对于 create, setData, delete 等有写操作的请求,则需要统一转发给leader 处理.leader 需要决定编号、执行操作,这个过程称为一个事务。 Follower:处理客户端非事务(读操作)请求,转发事务请求给Leader,参与集群Leader选举投票。 Observer:对于访问量比较大的集群,可以新增观察者角色, 处理客户端非事务(读操作)请求,不参与leader的选举投票。
Zookeeper有哪几种节点类型?
永久(Persistent):客户端和服务器端断开连接后,创建的节点不删除 临时(Ephemeral):客户端和服务器端断开连接后,创建的节点自己删除 (1)永久化目录节点 客户端与Zookeeper断开连接后,该节点依旧存在 (2)永久化顺序编号目录节点 客户端与Zookeeper断开连接后,该节点依旧存在,只是Zookeeper给该节点名称进行顺序编号 (3)临时目录节点 客户端与Zookeeper断开连接后,该节点被删除 (4)临时顺序编号目录节点 客户端与Zookeeper断开连接后,该节点被删除,只是Zookeeper给该节点名称进行顺序编号。
以下TextInputFormat怎么进行文件切分?
TextInputFormat根据文件大小将文件拆分成splits,如果单个文件较小小于128的1.1倍,则每个文件为一个split,并将文件按行分割形成<key,value>对,如果单个文件较大。超过block块(128M)默认大小得1.1倍,则会将文件切分为多个split。这一步由MapReduce框架自动完成,其中偏移量包括了回车所占的字符数。将分割好的<key,value>对交给用户定义的map方法进行处理,在map方法中根据业务逻辑处理<key,value>后生成新的<key,value>对输出。
描述MapReduce不合适对哪些场景的使用?
1).MapReduce不适合做低延迟数据访问场景的使用。
(2).MapReduce不适合存储大量小文件。
(3).MapReduce不支持多用户写入及任意修改文件
yarn有哪几部分组成,作用分别是什么?调度器主要有哪三种,hadoop默认的是哪一种?
由ResourceManager、NodeManager、ApplicationMaster和Container等组件构成; ResourceManager:处理客户端请求、监控NodeManager、启动或监控ApplicationMaster、资源的分配与调度 NodeManager:管理单个节点上的资源、处理来自ResourceManager的命令、处理来自ApplicationMaster的命令 ApplicationMaster:负责数据的切分、为应用程序申请资源并分配给内部的任务、任务的监控与容错 Container:Container是YARN中的资源抽象,它封装了某个节点上的多维度资源,如内存、CPU、磁盘、网络等。 FIFO、Capacity Scheduler(容量调度器)和Fair Scheduler(公平调度器)。Hadoop2.7.2默认的资源调度器是Capacity Scheduler(容量调度器)
请简述ZooKeeper的选举机制?
半数机制:集群中半数以上机器存活,集群可用。所以Zookeeper适合安装奇数台服务器。 (1)全新集群选举: 假设目前有5台服务器,每台服务器均没有数据,它们的编号分别是1,2,3,4,5,按编号依次启动,它们的选举过程如下: 服务器1启动,给自己投票,然后发投票信息,由于其它机器还没有启动所以它收不到反馈信息,服务器1的状态一直属于LOOKING。 服务器2启动,给自己投票,同时与之前启动的服务器1交换结果,由于服务器2的编号大所以服务器2胜出,但此时投票数没有大于半数,所以两个服务器的状态依然是LOOKING。 服务器3启动,给自己投票,同时与之前启动的服务器1,2交换信息,由于服务器3的编号最大所以服务器3胜出,此时投票数正好大于半数,所以服务器3成为领导者,服务器1,2成为Follower。 服务器4启动,给自己投票,同时与之前启动的服务器1,2,3交换信息,尽管服务器4的编号大,但之前服务器3已经胜出,所以服务器4只能成为Follower。 服务器5启动,后面的逻辑同服务器4成为Follower。 (2)非全新集群选举 对于运行正常的zookeeper集群,中途有机器down掉,需要重新选举时,选举过程就需要加入数据ID、服务器ID和逻辑时钟。 其中: 数据ID:数据新的version就大,数据每次更新都会更新version。 服务器ID:就是我们配置的myid中的值,每个机器一个。 逻辑时钟:这个值从0开始递增,每次选举对应一个值。 如果在同一次选举中,这个值是一致的。 这样选举的标准就变成: 逻辑时钟小的选举结果被忽略,重新投票; 统一逻辑时钟后,数据id大的胜出; 数据id相同的情况下,服务器id大的胜出; 根据这个规则选出leader。
使用Java编写代码,将hdfs上/a.txt文件下载到本地 提示信息:Configuration、FileSystem、FSDataInputStream、FileOutputStream、IOUtils(IOUtils.copyBytes、IOUtils.closeStream)
public void customGet() throws IOException { Configuration configuration = new Configuration(); FileSystem fileSystem = FileSystem.get( URI.create("hdfs://jinghang100:9000"), configuration, "jinghang" ); //设置HDFS数据文件的路径 Path hdfsPath = new Path("/a.txt"); //使用HDFS文件系统对象打开文件 FSDataInputStream inputStream = fileSystem.open(hdfsPath); //指定要下载到本地的文件路径 String localPath = "C:\Users\Administrator\Desktop\filetest\a.txt"; //将hdfs系统文件下载值本地 FileOutputStream outputStream = new FileOutputStream(localPath); IOUtils.copyBytes(inputStream,outputStream,configuration,true); IOUtils.closeStream(inputStream); IOUtils.closeStream(outputStream); fileSystem.close(); }
Hadoop 由开源的JAVA程序所编写。
查看hadoop的日志文件:
Cat hadoop-root-datanode-hadoop01.log
less hadoop-root-datanode-hadoop01.log
More hadoop-root-datanode-hadoop01.log
检查安装NTP服务命令:rpm -qa ntp
ZKFC是由hadoop框架提供的服务进程。
hdfs系统的模块启动脚本是start-dfs.sh
HDFS和YARN均是( 主从)架构
运行WordCount命令 hadoop jar hadoop-examples-2.7.2.jar wordcount /data/input /data/output
hadoop的发行版本:
Apache
Cloudera
Hortonworks
为了能够使用ls程序列出目录的内容,并能够使用cd进入该目录,操作者需要有读和执行该目录的权限
YARN服务组件不包括Application Master
YARN 总体上仍然是Master/Slave 结构
YARN服务组件包括:
ApplicationMaster
Container
ResourceManager
生成RSA秘钥对的命令是:
ssh-keygen -t rsa
ssh-keygen -t rsa -P ''
hadoop2.版本文件切分成块(默认大小128M),以块为单位.
文件关闭之后不能修改文件内容,只能完成追加操作
描述HDFS的计数器:
计数器相当于是一个全局变量
计数器每次增加的值一般都是1
Yarn的调度器:
FIFO 先进先出
B. 公平调度器 (Fair Scheduler)
C. 容量调度器(Capacity Scheduler)
实现服务器之间的文件分发的命令:
scp -r
rsync -av
继承自FileInputFormat的类的是:
CombineTextInputFormat
TextInputFormat
NLineInputFormat
KeyValueTextInputFormat
Shuffle中的Partitioner设置分区发生在溢写过程
在执行MapJoin过程中用JoB.addCacheFile()方法提交缓存文件小表数据