1、免密码登录的原理和配置
ssh不对称加密算法(加密和解密是两个文件)(对称加密: 加密和解密文件是同一个)
(1)公钥–锁:给出去 给其他机器
(2)私钥–钥匙:自己留着,解密
step1:ssh-keygen -t rsa(3次回车)
step2:ssh-copy-id -i ~/.ssh/id_rsa.pub root@hsiehchou121(自己也要拷贝给自己)
2、Hadoop安装—全分布模式 (重点)
(1)规划:
192.168.116.121 hsiehchou121 :主节点
192.168.116.122 hsiehchou122 :从节点
192.168.116.123 hsiehchou123 :从节点
192.168.116.124 hsiehchou124 :从节点
(2)准备工作:
step 1: jdk、防火墙、ssh免密码登录(3次拷贝)、在etc/hosts 添加主机名
对于同时操作多台机器可通过 工具-》发送键输入到所有会话 在选项卡排列 实现 水平排列
step 2:时间同步(如果能够上网) 使用网络时间(GUI设置)默认的都是一致的
不能上网: date -s 2019-01-10(同时操作多台机器) 集群紊乱
ntp:在机器里面指定一个服务器 作为时钟服务器
step 3: 修改配置文件()
主要在hsiehchou 121操作,其他机器通过scp拷贝
3、slaves(和自己的从节点机器名字一致)
hsiehchou122
hsiehchou123
hsiehchou124
4、通过HDFS namenode 格式化
5、通过scp拷贝
学会看 vi /opt/module/hadoop-2.7.3/logs/hadoop-root-datanode-hsiehchou123.log
Shift+G 看启动日志
HDFS体系架构(Yarn资源放在后面)
6、HDFS-NameNode:名称节点
(1)职责:对HDFS的节点进行管理,管理员
接收客户端(命令行、java)的请求:创建目录、上传数据、下载数据和删除数据
管理和维护HDFS的日志和元信息
(2)dfs/name:
a、current:主要存放日志和元信息 存贮路径:/opt/module/hadoop-2.7.3/tmp/dfs/name/current
edits文件:二进制文件,体现了HDFS的最新状态
o:表示 offline
inprogress:表示最新的
b、元信息文件 fsimage:记录的数据块的位置信息和数据块冗余信息,没有体现HDFS的最新状态,二进制文件
(2)in_use.lock 避免同一文件被多使用,只能启动一个namenode
7、HDFS-DataNode:数据节点
(1)主要用来进行数据的存储。
1.x 64M
2.x 128M( hdfs-site.xml 可以修改 blocksize)
(2)数据块的表现形式就是一个个的blk文件
位置:/opt/module/hadoop-2.7.3/tmp/dfs/data/current/BP-298124919-192.168.116.121-1550208140930 ###/current/finalized/subdir0/subdir0
尝试上传一个 大于128M的文件(128*1024*1024)
Hadoop 3.x 有 纠删码技术,节约存储空间
8、上传文件
首先创建文件夹
hdfs dfs -mkdir /software/input
上传我本地文件到hdfs上
hdfs dfs -put hdfs dfs -put /opt/software/hadoop-2.7.3.tar.gz /software/input
就OK了
之后可以使用上面的命令查看
9、HDFS-SecondaryNameNode:第二名称节点
(1)进行日志信息的合并,根据checkpoint或者时间间隔(3600s)或者edits文件达到64M
(2)edits文件合并到fsimage里面 edits文件可以清空
看日志
/opt/moudle/hadoop-2.7.3/logs vi shift+G
10、HDFS-Web Console
hdfs dfsadmin -report
http://192.168.116.125:50070/dfshealth.html#tab-overview
(1) Overview–展示HDFS的基本信息
Safemode is off.—高级特性
(2)DataNodes-数据节点信息
增加和删除数据节点(Decomissioning–>Dead)
(3)Datanode Volume Failures–数据节点 硬件错误
(4)Snapshot(快照)—高级特性
快照实现数据的备份,防止数据的误操作和丢失。默认是关闭的。
(5)Startup Progress–启动过程
(6)Uitlities:
Browse 文件 —hdfs -dfs -ls /
logs—查看日志
11、HDFS 普通操作命令–hdfs dfs(hadoop fs)
(1)创建目录–mkdir
hdfs dfs -mkdir /
(2)查看–ls
查看目录和子目录 hdfs dfs -ls -R /
hdfs dfs -lsr /
(3)上传数据
hdfs dfs -put hadoop-root-namenode-hsiehchou125.log /test1
-put :
-copyFromLocal: 本地路径 hdfs路径
hdfs dfs -copyFromLocal ~/temp/a.txt /test0113/
-moveFromLocal: 会删除本地文件 剪切
(4)下载数据
-get:
-copyToLocal:从HDFS下载到本地
(5)删除数据
-rm
-rmr: 删除HDFS的目录和子目录
删除日志: Deleted /test1
回收站—高级特性 默认是关闭。
(6)合并数据–(为hive表数据操作做准备。)
-getmerge :hdfs 把某个HDFS的目录下的文件进行先合并后下载
*:通配符 ?
hdfs dfs -getmerge /students /root/students.txt
(7)计数和文件大小
-count 显示 文件夹、文件个数 文件总的大小
-du 显示每个文件夹和文件的大小
[root@hsiehchou125 ~]# hdfs dfs -count /students
1 4 38/students
hdfs[root@hsiehchou125 ~]# hdfs dfs -du /students
25 /students/students01.txt
13 /students/students02.txt
(8)负载均衡 balancer
实现datanode 数据存储均衡
## hdfs balancer ##
12、HDFS 管理员命令
(1)hdfs dfsadmin -report 打印报告
(2) -safemode <enter | leave | get | wait>
enter:手动进入安全模式
leave:手动离开安全模式
get:获得当前安全模式的状态
hdfs dfsadmin -safemode get
[root@hsiehchou125 ~]# hdfs dfsadmin -safemode enter
Safe mode is ON
(3)快照命令
(4)Quota 配额
a、名称配额–数量
b、空间配额–空间大小
13、IDEA Maven工程简介
(1)IDEA 下载地址:
https://www.jetbrains.com/idea/download/
破解方法自行查找
(2)File-new Project->Maven
GroupID: 公司名字
artifactId:工程名字。
java程序在:src-》main->java 右键 新建 java class文件
target: 是运行程序生成的class文件
(3)管理包
/opt/moudle/hadoop-2.7.3/share/hadoop/common/*.jar
/opt/moudle/hadoop-2.7.3/share/hadoop/common/lib/*.jar
/opt/moudle/hadoop-2.7.3/share/hadoop/hdfs/*.jar
/opt/moudle/hadoop-2.7.3/share/hadoop/hdfs/lib/*.jar
通过maven只需要配置POM文件
a、 下载一个maven版本
http://maven.apache.org/index.html
b、通过 File-settings-Maven
修改: D:\TZ\apache-maven-3.6.0-bin\apache-maven-3.6.0\conf\settings.xml
55行:
c、POM中写入包的依赖
参考:https://mvnrepository.com/search?q=hadoop
14、文件夹的创建
15、HDFS权限问题
(1)修改 hdfs-site.xml 去掉权限检查(关闭HDFS服务 stop-all.sh;修改后 重新 Start-all.sh)
(2)通过设定用户名字 rootSystem.setProperty(“HADOOP_USER_NAME”,”root”);
(3)通过java的-D参数传递。 HADOOP_USER_NAME=root (命令行的方式)
public static void main(String[] args)
Java -D命令对应的代码中获取-D后面的参数 和 多个参数时-D命令的使用
-
Java代码:
-
cmd命令:
执行命令后输出:hdfshdfs
注意:-D和Para之间不能有空格
-
使用多个参数,如P、P1
java -DP=hdfshdfs -DP1=1212 DP
执行命令后输出:
hdfshdfs
1212
(4)hdfs dfs -chmod 777 /input 让所有用户访问
(5)针对HDFS权限问题,有kerberos认证
Kerberos: The Network Authentication Protocol
https://www.cnblogs.com/wukenaihe/p/3732141.html
16、IDEA Maven工程实现HDFS的文件上传与下载
Maven环境中 只有当 POM文件中所有的依赖包全部变成白色。
pom.xml
(1)HDFS文件上传
查看源码:crtl+鼠标左键
## Failed to locate the winutils binary in the hadoop binary path java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries. ##
step1:
下载:hadoop2.7.3 winutils binary
https://github.com/rucyang/hadoop.dll-and-winutils.exe-for-hadoop2.7.3-on-windows_X64
step2: 配置环境变量 拷贝进入 D:\hadoop-2.7.3\bin文件下。
hadoop.home.dir —bin/winutils.exe
HADOOP_HOME:D:\hadoop-2.7.3,然后再path里面增加 %HADOOP_HOME%\bin
或者:System.setProperty(“hadoop.home.dir”, “D:\hadoop-2.7.3”);
(2)HDFS文件下载
### 使用IOUtils 输入路径 输出路径###
IOUtils.copyBytes(input,output,1024);
文件元信息
{
文件名: *.txt
路径: /text
大小: 100KB
冗余度: 3
数据块1: DNS1,DNS2,DNS3
(如果文件大切分)
}
17、HDFS上传文件原理
1、请求上传数据
2、创建客户端
3、建立RPC通信
4、NameNode对象
代理对象NameNodeProxies
5、请求创建文件元信息
6、创建文件元信息
7、缓存文件元信息(1000M)
8、返回元信息
9、根据元信息创建输出流
10、上传第一个数据块
11、数据块自动复制
12、循环上传