文章目录
hadoop概述
- HDFS 分布式文件系统 用于存储数据
- MapReduce 分布式计算框架 用于计算数据 只适合离线分析 只专注于任务的执行, 任务的调度交给YARN
- YARN 云操作系统 资源的调度可以运行MapReduce, spark, 扩展性更高一些
- zookeeper 协调集群之间的同步
- 节点类型 命名为znode 保存大小为1M
- 持久类型 客户端进行连接中断之后, znode节点不会删除
- 临时类型 客户端进行连接中断之后, 节点会被删除
- 投票机制—面试题
- 没有数据的情况:
通过myid给自己投票, 根据myid的大小绝点票数, 谁的票最多, 谁就是leader, 半数以上的的节点运行成功之后, 才能提供服务 - 有数据的情况:
根据xid数据的更新版本号为标准, 如果xid一样则判断myid的票数
- 没有数据的情况:
- HA原理解答思路:
- 存在的服务: zookeeper, jnode, zkfc
- 什么是HA?
两个节点:一个Active一个standby, 解决了namenode单点故障
同步元数据:jnode节点同步edits编辑日志, 也要是一个集群, 安全性得到了保障, 一致性减弱了, 为了解决一致性的问题, 需要存在zookeeper,用来监控集群, 当某一个节点出现问题时, 找一个空闲节点来接替出现故障的节点 - 切换机制:
首先要监控到namenode,当一个namanode出现故障的时候, 才能进行切换, 通过ZKFCRPC调用监控namenode, 一旦一个namenode出现故障, zookeeper就会通知另外一个namenode的zkfc的进程启动standby,kill掉active执行一个ssh进程调用.
- 节点类型 命名为znode 保存大小为1M
ResourceManager HA
一、集群规划(3台)
PC01 | PC02 | PC03 |
---|---|---|
NameNode | NameNode | |
ZKFC | ZKFC | |
ResourceManager | ResourceManager | |
DataNode | DataNode | DataNode |
JournalNode | JournalNode | JournalNode |
NodeManager | NodeManager | NodeManager |
ZooKeeper | ZooKeeper | ZooKeeper |
二、修改配置文件
=====yarn-site.xml
<!--启用resourcemanager ha-->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>rmcluster</value>
</property>
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>hadoop.senior02</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>hadoop.senior03</value>
</property>
<!--指定zookeeper集群的地址-->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>hh1:2181,hh2:2181,hh3:2181</value>
</property>
<!--启用自动恢复-->
<property>
<name>yarn.resourcemanager.recovery.enabled</name>
<value>true</value>
</property>
<!--指定resourcemanager的状态信息存储在zookeeper集群-->
<property>
<name>yarn.resourcemanager.store.class</name>
<value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
</property>
三、分发配置文件
将yarn-site.xml分发到其他两台
scp etc/hadoop/yarn-site.xml hh2:/opt/modules/hadoop-2.5.0/etc/hadoop/
scp etc/hadoop/yarn-site.xml hh3:/opt/modules/hadoop-2.5.0/etc/hadoop/
四、启动ResourceManagere
在PC2上:
sbin/start-yarn.sh
在pc3上单独启动:
sbin/yarn-daemon.sh start resourcemanager
五、查看状态及测试
查看状态
bin/yarn rmadmin -getServiceState rm1 ##查看rm1的状态
bin/yarn rmadmin -getServiceState rm2 ##查看rm2的状态
查看web界面
hh2:8088
hh3:8088
当PC02的ResourceManager是Active状态的时候,访问PC03的ResourceManager会自动跳转到PC02的web页面
bin/yarn jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.5.0.jar pi 1 3
【PC1】
[hadoop@hadoop hadoop-2.5.0]$ jps
12837 DataNode
13199 DFSZKFailoverController
13022 JournalNode
13430 Jps
9386 QuorumPeerMain
13312 NodeManager
12738 NameNod
【PC2】
[hadoop@hadoop hadoop-2.5.0]$ jps
9648 ResourceManager
9260 NameNode
9547 DFSZKFailoverController
7184 QuorumPeerMain
9422 JournalNode
9329 DataNode
10084 Jps
9744 NodeManager
【PC3】
[hadoop@hadoop hadoop-2.5.0]$ jps
6815 ResourceManager
6537 JournalNode
5449 QuorumPeerMain
6630 NodeManager
6871 Jps
6447 DataNode
Hive
Hive是什么?
-
主要用于解决海量数据的日志分析, 是基于hadoop的数据仓库工具, 可以把结构化的数据映射成一张表, 通过MR模板在YARN上运行MapReduce的程序
-
运行SQL语句, 称为HQL, 本质上把HQL语句转换为MapReduce程序运行
-
数据库和数据仓库的区别:
数据库直接存储数据, 而数据仓库不直接存储数据, 数据存储到HDFS 上 -
Hive的特点:
优点: 简单, 容易上手, 维护方便, 学习容易
缺点: 自动生成的MapReduce程序不够灵活, 智能, 效率方面不是很高
hive的安装部署
- 课程中会用到Apache和CDH两个版本
- 由于hive是依赖于hadoop的, 所以先把hadoop相关的服务启动
- 配置hive
–>解压 tar -zxvf apache-hive-1.2.1-bin.tar.gz -C [一个安装目录]
–>创建目录用于保存hive的所有数据, 便于管理
–>修改权限bin/hdfs dfs -mkdir /tmp bin/hdfs dfs -mkdir /user/hive/warehouse
bin/hdfs dfs -chmod g+w /tmp bin/hdfs dfs -chmod g+w /user/hive/warehouse
- hive在HDFS上的默认路径
<property> <name>hive.metastore.warehouse.dir</name> <value>/user/hive/warehouse</value> <description>location of default database for the warehouse</description> </property>
- 修改hive-env.sh(改名)
# Set HADOOP_HOME to point to a specific hadoop install directory HADOOP_HOME=/opt/moduels/hadoop-2.5.0 # Hive Configuration Directory can be controlled by: export HIVE_CONF_DIR=/opt/moduels/hive-0.13.1-bin/conf
- 启动hive
${HIVE_HOME}/bin/hive
数据库操作
一 基本操作
- 查看数据库
show databases;
- 创建数据库
create database test;
- 使用数据库
use test;
- 查看数据库下所有的表
show tables;
- 创建数据库表
create table student (id int , name string);
- 查看表结构
desc student;
- 增加数据
insert into student values(20,"tom");
- 查询表中的数据
select * from student;
二 本地数据导入到hive
- 在本地目录准备好需要导入的数据/data
- 创建指定分隔符的数据表
create table student(id int , name string) row format delimited fields terminated by ‘\t’; - 加载数据到数据表中load data local inpath ‘/data/student.txt’ into table student;
三 删除数据库
drop database test; //只能删除一个空的数据库
drop database test cascade;//如果要删除的数据库不为空,里面存在数据表,则可以加上关键字cascade
四 删除表
- 先创建一个普通的表,指定文件的位置为一个存在数据的位置
create table student4(id int,name string)
row format delimited fields terminated by '\t'
stored as textfile
location '/user/hive/warehouse/student';
- 删除后对该表进行查询,发现也可以查询到数据
drop table student4;
- 管理表和外部表
- 管理表:对于表中的结构存在所属权, 对于创建一个普通的表来说, 默认就是管理表
- 外部表:表中的结构不存在所属权, 因为创建的表为外表, 对数据没有所有的权限, 就相当于不完全拥有这份数据
- 创建外部表
create EXTERNAL table student4(id int,name string)
row format delimited fields terminated by '\t'
stored as textfile
location '/user/hive/warehouse/student';
通过这种方式创建外部表, 在删除的时候不会删除原来的数据.