hadoop
--------------
分布式计算框架。
common //
hdfs //存储
mapreduce //MR,编程模型.
yarn //资源调度.
集群部署
-----------
1.standard alone/local //本地模式
nothing.
2.伪分布式
一台机器.
NN //目录
DN //DataNode,block(128M:更改配置文件更改大小)
RM
NM
2NN
3.完全分布式
项目管理
--------------------
(由于在第三方进行开发时依赖的很多jar包,jar又依赖jar包,需要通过maven将所有依赖的jar包找到)
某些开发会将 所有jar包放置到lib下,此方法有时不便于管理
pom.xml //项目对象模型文件
artifact //项目所依赖的工件
安装maven
----------------
项目管理软件。
软件之间的依赖关系。
${user_home}/.m2
[windows]
1.解压即可
不要放中文或空格目录。
2.配置环境变量.
M2_HOME=c:\myprograme\apache-maven-3.3.9
PATH=...;%M2_HOME%\bin
3.验证是否安装成功
cmd>mvn -v
4.修改默认的仓库位置
[${maven_home}/conf/setttings.xml]
<settings ...>
...
<localRepository>e:/repo</localRepository>
...
</settings>
5.配置idea使用指定settings.xml文件.(安装目录\conf\settings)
idea>>settings(扳手图标)>>maven>>设置用户的user setting file和local repository到指定路径
[Centos]
1.tar开文件
/soft/apache-maven-3.3.9
/soft/maven --> maven-3.3.9
2.配置环境
[/etc/profile]
M2_HOME=/soft/maven
PATH=$PATH:$M2_HOME/bin
3.验证是否成功
$>mvn -v
Apache Maven 3.5.0 (ff8f5e7444045639af65f6095c62210b5713f426; 2017-04-03T12:39:06-07:00)
Maven home: /home/hadoop/soft/maven
Java version: 1.8.0_131, vendor: Oracle Corporation
Java home: /home/hadoop/soft/jdk1.8.0_131/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-514.el7.x86_64", arch: "amd64", family: "unix"
maven工作原理
--------------
依赖于互联网
通过互联网,maven将所依赖的包逐级查找并下载,存储在maven仓库中(C:\Users\Administrator\.m2\repository)
如果没有本地仓库.m2,可通过早idea中写入依赖,刷新maven project后,便可在本地产生仓库文件(以下为举例)
<dependencies>
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
</dependency>
</dependencies>
maven查找依赖时先走本地仓库,然后到互联网下载
依赖(maven工件是三级定位)
-------------
<dependency>
<!-- 组id,解析成目录org/apache/hadoop/hadoop-hdfs/2.7.3 -->
<groupId>org.apache.hadoop</groupId>
<!-- 工件id artifact -->
<artifactId>hadoop-hdfs</artifactId>
<!-- 版本 -->
<version>2.7.3</version>
</dependency>
maven仓库导入
-------------
将仓库所在路径下的压缩包打开,直接拖至该位置,覆盖写入即可
当需要将仓库更改位置时
安转idea
-----------------
缺点:调试困难,不支持在一个窗口中打开多个项目
1.右键点击ideaIU.exe文件,选择管理员身份运行.
2.打开idea.网上查找注册码注册
使用:file>>新建project>>新建模块(module)>>模块右键/框架支持>>maven>>
3.设置快捷键
选中快捷键内容>>tools>>sava as file template>>abbreviation设置快捷键/template设置快键键对应文本>>点击change,勾选快捷键应用的场景
eclipse----->idea
--------------------------
工作空间---->项目
项目-------->模块
hadoop
--------------
web UI http://hadoop01:50070
数据节点可以配置多个目录,将一个文件分开存储到多个目录下
名称节点配置的多个目录是将相同的文件存放在多个目录下
hdfs切块是物理切割
文件按块存储后将每块下载,拼接到一块,可以完全恢复成原来的文件
hdfs常见操作
-------------------
1.查看hdfs帮助
$>hdfs $>hdfs dfsadmin -help setQuato
2.hdfs dfs
3.hdfs getconf -namenodes //查看集群中的名称节点
hdsf getconf <name> //取集群中的配置
4.hdfs getcon -confkey dfs.namenode.fs-limits.min-block-size //查看键值>dfs.namenode.fs-limits.min-block-size
5.hdfs dfs -appendToFile dir dst //对hdfs文件系统中的文件追加,dir追加文件,dst目标文件
配置hadoop的最小blocksize,必须是512的倍数。
-------------------------------------------
[hdfs-site.xml]
dfs.namenode.fs-limits.min-block-size=1024
hdfs在写入过程中需要进行校验,512B进行一次校验。
在windows下向hdfs文件系统中写入时,需要有权限写入
单独配置辅助名称节点
---------------------
[hdfs-site.xml]
dfs.namenode.secondary.http-address=hadoop05:50090
使用oiv命令查询hadoop镜像文件
------------------------------
hdfs oiv -i fsimage -o a.xml -p XML //查看镜像文件。
hdfs oev -i edits -o a.xml -p XML //查看编辑日志文件
hdfs dfsadmin管理命令
----------------------
$>hdfs dfsadmin //查看帮助
$>hdfs dfsadmin -help rollEdits //查看指定命令的帮助
$>hdfs dfsadmin -rollEdits //滚动编辑日志
启动hdfs时,进入安全模式,镜像文件编辑日志进行融合,编辑日志滚动。
查看hdfs是否在安全模式
------------------------
$>hdfs dfsadmin -safemode enter //进入
$>hdfs dfsadmin -safemode get //查看
$>hdfs dfsadmin -safemode leave //退出
$>hdfs dfsadmin -safemode wait //等待
hadoop
--------------------
$>hadoop fs //hdfs dfs
$>hadoop checknative //检查压缩库本地安装情况
$>hadoop namenode -format //格式化名称
$>hadoop classpath //查看类路径,hadoop中有的jar包
$>hadoop trace ///守护日志
hdfs管理命令
--------------------
hdfs dfsadmin
保存名字空间,需要进入安全模式
--------------------------------
$>hdfs dfsamdin -saveNamespace //将名称空间存储在名称节点的镜像文件的同一目录,保存格式为镜像文件fsimage,滚动保存
hadoop启动命令
------------------
//凡是和slaves有关系的,启动时都是使用hadoop-daemons.sh脚本进行启动
$>start-all.sh //start-dfs.sh + start-yarn.sh
$>start-dfs.sh //hadoop-daemon.sh start namenode 单独启动名称节点
//hadoop-daemons.sh start datanode 单独启动数据节点
//hadoop-daemons.sh start secondarynamenode //单独启动辅助名称节点
$>start-yarn.sh //yarn-daemon.sh start resourcemanager 单独启动资源管理器
//yarn-daemons.sh start nodemanager 单独启动节点管理器
配额管理(quota)
-------------------
[目录配额]
计算目录下的所有文件的总数。如果1,表示空目录。
目录配额为长整数(long),需要管理员用户进行设置,只能配置目录,不能配置文件或其他
$>hdfs dfsadmin -setQuota 1 dir1 dir2 //设置目录配额
$>hdfs dfsadmin -clrQuota 1 dir1 dir2 //清除配额管理
[空间配额]
计算目录下的所有文件的总大小.包括副本.(即一个文件的存储占用的空间相当于所有副本存放在同一位置占用的空间大小)
空间配置至少消耗384M的空间大小(目录本身会占用384M的空间)。
$>hdfs dfsadmin -setSpaceQuota 3 data //3表示空间配额为3B
$>echo -n a > k.txt //>覆盖写入 >>追加写入 -n表示在在文件的末尾不加入换行符,如果没有-n则文件中便会加入换行符
$>hdfs dfs -put k.txt data2
$>hdfs dfsadmin -clrSpaceQuota dir1 //清除配额管理
快照管理
--------------------
1.描述
迅速对文件(夹)进行备份。不产生新文件,使用差值存储。按照树的方式备份,备份根即可备份全部
默认是禁用快照,产生快照需要先启用快照。
2.命令
$>hdfs dfsadmin -allowSnapShot dir1 //在dir1启用快照
$>hdfs dfsadmin -disallowSnapShot dir1 //在dir1禁用快照
$>hdfs dfs -createSnapshot dir ss1 //创建快照
$>hdfs dfs -renameSnapshot dir ss1 ss2 //重命名
$>hdfs dfs -deleteSnapshot dir ss1 //删除快照
slaves:集群启动时向该文件中的主机发送启动数据节点的命令,不是由其决定数据节点连接到集群上的
是由名称节点上的白名单dfs.include决定,需要在hdfs-site.xml文件中进行配置
黑白名单的组合情况
-------------------------
include //dfs.include
exclude //dfs.hosts.include
include exclude Interpretation
No No 不能连接
No Yes 不能连接
Yes No 可以连接
Yes Yes 可以连接,将会退役状态。
节点的服役和退役(hdfs)
----------------------
[添加新节点]
1.在dfs.include文件中包含新节点名称,该文件在nn的本地目录。
[白名单]
[s201:/soft/hadoop/etc/dfs.include.txt]
s202
s203
s204
s205
2.在hdfs-site.xml文件中添加属性.
<property>
<name>dfs.hosts</name>
<value>/soft/hadoop/etc/dfs.include.txt</value>
</property>
3.在nn上刷新节点
$>hdfs dfsadmin -refreshNodes
4.在slaves文件中添加新节点ip(主机名)
s202
s203
s204
s205 //新添加的
5.单独启动新的节点中的datanode
[s205]
$>hadoop-daemon.sh start datanode
[退役]
1.添加退役节点的ip到黑名单,不要更新白名单.
[/soft/hadoop/etc/dfs.hosts.exclude.txt]
s205
2.配置hdfs-site.xml
<property>
<name>dfs.hosts.exclude</name>
<value>/soft/hadoop/etc/dfs.hosts.exclude.txt</value>
</property>
3.刷新nn节点
$>hdfs dfsadmin -refreshNodes
4.查看webui,节点状态在decommisstion in progress.
5.当所有的要退役的节点都报告为Decommissioned,数据转移工作已经完成。
6.从白名单删除节点,并刷新节点
[s201:/soft/hadoop/etc/dfs.include.txt]
...
$>hdfs dfsadmin -refreshNodes
7.从slaves文件中删除退役节点
节点的服役和退役(yarn)
----------------------
[添加新节点]
1.在dfs.include文件中包含新节点名称,该文件在nn的本地目录。
[白名单]
[s201:/soft/hadoop/etc/dfs.include.txt]
s202
s203
s204
s205
2.在yarn-site.xml文件中添加属性.
<property>
<name>yarn.resourcemanager.nodes.include-path</name>
<value>/soft/hadoop/etc/dfs.include.txt</value>
</property>
3.在nn上刷新节点
$>yarn rmadmin -refreshNodes
4.在slaves文件中添加新节点ip(主机名)
s202
s203
s204
s205 //新添加的
5.单独启动新的节点中的nodemananger
[s205]
$>yarn-daemon.sh start nodemananger
[退役]
1.添加退役节点的ip到黑名单,不要更新白名单.
[/soft/hadoop/etc/dfs.hosts.exclude.txt]
s205
2.配置yarn-site.xml
<property>
<name>yarn.resourcemanager.nodes.exclude-path</name>
<value>/soft/hadoop/etc/dfs.hosts.exclude.txt</value>
</property>
3.刷新rm节点
$>yarn rmadmin -refreshNodes
4.查看webui,节点状态在decommisstion in progress.
5.当所有的要退役的节点都报告为Decommissioned,数据转移工作已经完成。
6.从白名单删除节点,并刷新节点
$>yarn rmadmin -refreshNodes
7.从slaves文件中删除退役节点