基础知识回顾
IO
在程序中IO流是阻塞的,支持随机读取数据,不支持修改数据
long skip=fis.skip(long): 读取文件跳过n个字节 1k=1024byte
序列化
将内存中的对象存储在磁盘上,或者是将对象通过网络传输! 需要对象实现序列化,
本质:序列化就是对象转二进制的规则,反序列化就是将二进制转化成对象规则
java中有自己的序列化机制实现接口(Serializable)
序列化将对象持久化到磁盘(持久化 钝化)
反序列将磁盘上的对象数据反序列化成java对象(活化)
JSON: 保证存储的数据比Serializable方式存储的数据少 网络传输节省资源
自定义序列化规则
1.定义一个接口(writeable) 有读写方法
2.要序列化的java类实现接口 重写读写规则(序列化规则)
3.测试使用 调用读写方法实现序列化和反序列化
WriteUTF WriteInt WrinteDouble:分开读写(直接写属性到磁盘)
优点:灵活 方便 数据量小 读取要按照存储是顺序来读
自定义Iterable接口
在不知道数据结构和数据条数的情况下使用 实现Iterable接口重写hasnext和next方法
hadoop简介
hadoop是一个大数据的技术(框架)
主要大数据的问题
海量数据的存储 海量数据的运算 多台机器的资源调配(储存资源 运算资源)
1 海量数据的存储 HDFS hadoop distribute filesystem
2 海量的数据的运算 MapReduce运算框架
3 运算资源调度和任务监控平台 Yarn
4 工具包 commons
特点
1. 高容错 高可用
2. 极易扩展集群规模 增强存储能力和计算能力
3. 廉价性 对机器的要求不高
HDFS简介
HDFS分布式文件系统: hadoop distribute filesystem
文件系统: 读写 读写数据 上传数据 删除数据 创建文件夹 移动 复制… 提供虚拟的访问目录
mysql是文件系统: 关系型数据(行数据) 条数据单位 针对某一条数据的增删改查
分布式文件系统
1.数据存储的时候 要切块存储 128M
2.数据存储的时候 要存储3个备份
3.为客户端提供统一的访问目录
虚拟目录—>数据块真正存储在哪个机器的哪个位置(生成元数据)
主节点
1) 管理虚拟路径
2) 管理存储数据的节点(多个)
3) 接收客户端的读写请求
HDFS安装
1.上传
上传的路径:/opt/apps
命令:rz
2.解压
命令:tar -zxvf hadoop-3.1.1.tar.gz (v可以省略 不看具体解压内容)
bin:客户端的命令
etc:配置目录
include:依赖包
sbin:超级命令 集群的启停
share:文档和jar包
3.配置
命令:vi /opt/apps/hadoop-3.1.1/etc/hadoop/hadoop-env.sh
第二行添加:export JAVA_HOME=/opt/apps/jdk1.8.0_141/
命令:vi /opt/apps/hadoop-3.1.1/etc/hadoop/hdfs-site.xml
中间添加:
dfs.namenode.rpc-address
linux01:8020
dfs.namenode.name.dir
/opt/hdpdata/name
dfs.datanode.data.dir
/opt/hdpdata/data
dfs.namenode.secondary.http-address
linux02:50090
命令:vi /opt/apps/hadoop-3.1.1/etc/hadoop/core-site.xml
中间添加:
fs.defaultFS
hdfs://linux01:8020
4.分发
命令:scp -r hadoop-3.1.1 linux02:
P
W
D
命
令
:
s
c
p
−
r
h
a
d
o
o
p
−
3.1.1
l
i
n
u
x
03
:
PWD 命令:scp -r hadoop-3.1.1 linux03:
PWD命令:scp−rhadoop−3.1.1linux03:PWD
5.初始化
在bin目录下执行
命令: ./hadoop namenode -format
在/opt/hdpdata/name
6.启动
在sbin目录下执行
命令: ./hadoop-daemon.sh start namenode
jps 出现Namenode进程
访问页面 http://linux01:9870
7.配置系统环境变量
命令:vi /etc/profile
末尾添加:
export JAVA_HOME=/opt/apps/jdk1.8.0_141
export HADOOP_HOME=/opt/apps/hadoop-3.1.1
export PATH=
P
A
T
H
:
PATH:
PATH:JAVA_HOME/bin:
H
A
D
O
O
P
H
O
M
E
/
b
i
n
:
HADOOP_HOME/bin:
HADOOPHOME/bin:HADOOP_HOME/sbin
配完之后: 命令: source /etc/profile (作用于整个作用域)
8.一键启停
在 etc/hadoop/workers 配置 需要启动DataNode的机器名
添加: linux01 linux02 linux03
命令: vi sbin/start-dfs.sh
行首添加:#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
命令: vi sbin/stop-dfs.sh
行首添加:#!/usr/bin/env bash
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
启动: ./start-dfs.sh
关闭: ./stop-dfs.sh