面试题(每日新增)
2018/10/22
面试题:
* 1.JDBC工作原理
* 2.本地yum源配置过程(使用光盘镜像)
一、面试题
1.JDBC工作原理
** JAVA Database Connectivity java 数据库连接
** 具体步骤:
** jar包 ——> classpath : 右键jar包——>add to BuildPath
** 加载驱动——load the driver
** 向DriverManager注册驱动
** 利用反射加载驱动
** 此时加载驱动时,静态代码块会被执行
--------------------------------------------------------------------
try {
Class.forName(driverClass); //com.mysql.jdbc.Driver
}
catch(ClassNotFoundException e) {
e.printStackTrace();
}
--------------------------------------------------------------------
** 获取连接
** 注意连接字符串url = jdbc:{dataBase}://{host}:{port}/{schema}
---------------------------------------------------------------------
try {
conn = DriverManager.getConnection(url,user,password);
//url = jdbc:mysql://localhost/student
}
catch(SQLException e) {
e.printStackTrace();
}
---------------------------------------------------------------------
** 获取操作对象
** Statement和PreparedStatement
------------------------------------------------------------------------------------
Statement stmt = conn.createStatement();
PreparedStatement prestmt = conn.prepareStatement("insert into dept values(?,?,?)");
------------------------------------------------------------------------------------
** 操作数据库
** executeUpdate(sql)
** 返回int型,变更条数
** executeQuery()
** 返回ResultSet,Cursor游标——>在结果表中移动游标
** 接受返回结果
** 释放资源
** 关闭ResultSet -> 关闭StateMent(数据库会话) -> 关闭连接
** 以关闭connection为例
--------------------------------------------------------------------
static void closeConn(Connection conn) {
try {
if(conn != null)
conn.close();
}
catch(SQLException e) {
e.printStackTrace();
}
finally {
conn = null;
}
}
--------------------------------------------------------------------
2.yum源配置过程(使用光盘镜像)
* yum作用:
** 解决rpm软件包安装时的依赖问题 -> 软件包依赖,软件版本不匹配,系统架构(x86,x86_64),系统版本
** 基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无需频繁地一次次下载和安装
* yum 基本语法:
------------------------------------------------------------------
yum install -y httpd (功能描述:安装 httpd 并确认安装)
yum list (功能描述:列出所有可用的 package 和 package 组)
yum clean all (功能描述:清除所有缓冲数据)
yum deplist httpd (功能描述:列出一个包所有依赖的包)
yum remove httpd (功能描述:删除 httpd)
------------------------------------------------------------------
* 关联网络YUM配置
** 文件准备
** 一台联网的虚拟机
** 访问:http://mirrors.163.com/.help/centos.html在使用说明中,点击CentOS6进行保存
** 再保存文件的目录打开终端,执行pwd查看文件的保存位置
** 替换本地YUM文件
** 把下载的文件移动到/etc/yum.repos.d/目录
** mv CentOS6-Base-163.repo /etc/yum.repos.d/
** cd /etc/yum.repos.d/目录
** 用 CentOS6-Base-163.repo 替换 CentOS-Base.rep
** 安装命令
** yum clean all
** yum makecache
* 制作本地YUM源
** 准备一台服务器,版本 CentOS-6.8-x86_64-bin-DVD1.iso
** 配置好IP地址
** 将 CentOS-6.8-x86_64-bin-DVD1.iso镜像挂载到/mnt/cdrom
-------------------------------------------
mkdir /mnt/cdrom
mount -t iso9660 /dev/cdrom /mnt/cdrom
-------------------------------------------
** 修改本机上的YUM配置文件,将源指向自己,备份原有的YUM配置文件
-------------------------------------------
cd /etc/yum.repos.d/
cp CentOS-Base.repo CentOS-Base.repo.bak
-------------------------------------------
** 编辑CentOS-Base.repo文件
vi CentOS-Base.repo
-------------------------------------------
[base]
name=CentOS-Local
baseurl=file:///var/iso
gpgcheck=1
enabled=1 #增加改行,使能
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
-------------------------------------------
** 清除YUM缓存
yum clean all
** 列出可用的 YUM 源
yum repolist
** 安装相应软件
yum install -y httpd
** 开启 httpd 使用浏览器访问
http://hostname:80(如果访问不通,检查防火墙是否开启了80端口或关闭防火墙)
service httpd start
** 将 YUM 源配置到 httpd(Apache Server)中,
其他的服务器即可通过网络访问这个内网中的YUM源了
cp -r /mnt/cdrom/ /var/www/html/CentOS
** 取消先前挂载的镜像
umount /mnt/cdrom
** 在浏览器中访问 http://hostname/CentOS/
若成功,则可以被其他服务器访问且指向该YUM源
** 让其他需要安装RPM包的服务器指向这个YUM源,准备一台新虚拟机,备份或者删除原有的YUM配置文件
-------------------------------------------
cd /etc/yum.repos.d/
cp CentOS-Base.repo CentOS-Base.repo.bak
-------------------------------------------
** 编辑 CentOS-Base.repo 文件
vi CentOS-Base.repo
-------------------------------------------------------
[base]
name=CentOS-hoetname
baseurl=http://192.168.11.101/CentOS
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-6
-------------------------------------------------------
** 在此虚拟机上执行
yum clean all
yum repolist
2018/10/23
面试题
1、Hive的运行机制和原理
2、ext4,fat32,ntfs,swap各文件系统的数据类型的区别,mbr和gpt分区表的区别,fdisk和parted分区工具的区别
1、Hive的运行机制和原理
* 从两个方面来回答这个问题:
** hive的安装部署和运行
** hive和其他的大数据生态圈的组件的集合
* 第一方面:hive的安装部署和运行
** hive 概念
** 将结构化的数据文件映射为一张表,并提供类 SQL 查询功能
** hive的安装部署
** yarn运行依赖的组件:
** Hadoop(hdfs yarn)
** hive启动时,只需要hdfs
** hive也是可以启动的,可以执行单表查询
** 不带聚合和分组函数的单表函数是可以进行的,因为只是简单的文件读写,不涉及到转换为MapReduce过程
** 涉及到mapreduce的才需要yarn的调度
** 关系型数据库(MYSQL)
** 可以使用schematools指定使用其他的数据库
** 如果不安装mysql,则元数据信息存储在derby中
** 穿插:hive与数据库的区别
** 数据库
** 数据文件存放在磁盘上
** 数据元数据记录在自己的数据库表中(mysql表)
** 存放的元信息:数据库对象结构信息
** hive
** 数据文件存放在hdfs上
** 数据元数据信息存放在关系型数据库中
** 这也就决定了hive的运行架构:
** hive运行架构
** 本质是:将 HQL 转化成 MapReduce 程序
1)Hive 处理的数据存储在 HDFS
2)Hive 分析数据底层的实现是 MapReduce
** 可以通过HQL对结构化数据进行统计分析
** 可以以分布式的方式执行计算任务
** MR:计算模型
** hadoop实现了MR计算模型,是一个分布式的计算框架
3)执行程序运行在 Yarn 上
第二方面:hive和其他的大数据生态圈的组件的集合
** HQL——>MR——>数据文件从HDFS中读取,由YARN分配任务
** 如果只是查询,那么只是生成临时的结果显示出来
** 如果要将结果进行记保存
** create table {tableName} as {HQL} 此时HQL会触发MR,但是单表查询不会触发mapreduce,只是文件读写
** 将结果记录到表中,下次直接select * from {tableName},以此提高效率
* hive操作
** hive创建表
** 默认的数据库default ——> /user/hive/warehouse
** 数据库和数据库表都以文件夹的形式存在于HDFS
** 确定表类型——>内部表/外部表
** 内部表:默认就是内部表
** HDFS将数据文件导入到内部表——会将数据文件移动到表文件夹下
** 删除表时,数据也会被删除
** 外部表:external
** location:指定外部文件路径
** 删除表,数据文件保留
** 需要指定数据文件的分隔符(\001)
** 创建数据库test
** /user/hive/warehouse/test.db
** show databases;
** 元数据:mysql(hive)中:DBS(id,数据库名称,存放路径,描述信息等)
** 此时不需要和hdfs进行交互
** 只需要查找关系型数据库中的表即可
** show tables
** 元数据:mysql(hive)中:TBLS(id,数据表名称,关联到数据库的id)
** 此时不需要和hdfs进行交互
** 只需要查找关系型数据库中的表即可
** desc {tableName}
** mysql(hive) ——> COLUMNS_V2(关联到表的id,字段名称,字段类型,字段顺序)
** 此时不需要和hdfs进行交互
** 只需要查找关系型数据库中的表即可
* hive的执行
dataFlow(phoneNumber,upflow,downFlow)
* select phoneNumber,sum(upFlow),sum(downFlow) from dataFlow group by phoneNumber;
** Mapper
** 数据输入:数据表的数据文件
** 数据输出:group by 字段分组
** COLUMNS_V2表中字段名称和字段索引的对应
** Reducer
** 数据输入:Mapper的输出
** reduce方法:select 中出现的聚合函数
** 数据输出:select后面的部分
count(*) 和 count(phoneNumber)
* count:统计所有非空数据的条数
* count(*) 所有的都不是空才统计
字段a 字段b 字段c
111 333 null
111 342 123
111 355 124
* count(*) 结果为2
* count(a) 结果为3
* count(phoneNumber) 统计phoneNumber不为空的条数
2、ext4,fat32,ntfs,swap各文件系统的数据类型的区别,mbr和gpt分区表的区别,fdisk和parted分区工具的区别
- ext4
- Linux主要使用的文件系统
- IEB——>1024PB
- fat32
- XP:32GB
- 单个文件大小不超过4GB
- NTFS
- 2TB
- 单个文件大小2TB
- swap
- 交换分区
分区表区别:
* 能够支持的磁盘大小
* 分区
mbr
* 能够支持的磁盘大小2TB
* 4个主分区
* 3个主分区,一个扩展分区(分多个区)——>fdisk
gpt
* 能够支持的磁盘大小??
* 无限制的主分区——>parted
分区——>格式化(文件系统类型)——>mount{设备/分区} {目录}