安装EclipseX 插件
在eclipse中安装hadoop插件,方便查看dfs文件系统:
1. 下载hadoop2x-eclipse-plugin.zip文件
2. 解压hadoop2x-eclipse-plugin.zip/release/ *.jar到${eclipse的安装路径}/plugins下
3. 重启eclipse
4. 验证hadoop插件是否安装成功:
preferences--> Hadoop/MapReduce--> 选择hadoop解压文件目录下
New Hadoop Location --> location name : s100 --> Host : s100 --> MapReduce Port : 50020 --> DFS Port : 8020
机架感知
网络拓扑:
节点距离:两个节点到达最近的公共路由跃点数。
同一节点上的两个进程 : 0
同一机架上的两个节点的两个进程 : 4
不同机架上的两个不同节点的两个进程 : 6
自定义机架感知:
1. 创建MyDNSToSwitchMapping类实现DNSToSwitchMapping接口
2. 将该类文件生成jar文件,拷贝到{/soft/hadoop/share/hadoop/common/lib/}下(即hadoop的安装路径下),并且进行集群分发。
3. 配置[core-site.xml]文件,并且进行分发。
<property >
<name >net.topology.node.switch.mapping.impl</name >
<value>com.li.dns.MyDNSToSwitchMapping</value>
<description> The default implementation of the DNSToSwitchMapping. It
invokes a script specified in net.topology.script .file .name to resolve
node names. If the value for net.topology.script .file .name is not set , the
default value of DEFAULT_RACK is returned for all node names.
</description>
</property >
克隆一个主机:
1. 克隆一个新节点
2. 启动新节点
3. 修改新节点的ip和hostname
[/etc/hostname]
s107
[/etc/network/interfaces]
address 192.16.10.100
4. 修改主机s100的/etc/hosts文件,并进行分发
[/etc/hosts]
s107 192.16.10.100
5. 在主机s100上连接s107:
6. 修改xsync和xcall脚本文件
7. 修改s100的slaves文件并进行分发
[/soft/hadoop/etc/hadoop/slaves]:
s101
s102
s103
s104
s105
s106
s107
8. 删除hadoop文件系统文件夹,并且删除hadoop的日志文件,(不需要进行格式化,如进程有问题时再进行格式化)重启hadoop集群。
s100:$> cd ~/hadoop/dfs/name1/current/
$> hdfs oiv -p XML -i fsimage_0000000000000000069 -o ~/fimage.xml
[fimage.xml ]:
s100:$> cd ~/hadoop/dfs/name1/current/
$> hdfs oev -p XML -i edits_0000000000000000001-0000000000000000011 -o ~/fsedit.xml
[fsedit.xml]:
9. namenode:
存放元素(名称,副本数,节点块信息,权限) ,不包含数据节点
每当启动集群时,数据节点会向namenode节点发送本节点的副本数、块信息、等信息,保证通过namenode可以访问到数据
文件整理
hadoop集群启动时首先进入安全模式:
当集群是处于安全模式时,不能执行重要操作(读写操作)
集群启动完成后,自动退出安全模式。
1. 安全模式操作:
$>hdfs dfsadmin -safemode get
$>hdfs dfsadmin -safemode enter
$>hdfs dfsadmin -safemode leave
$>hdfs dfsadmin -safemode wait
2. 以等待状态为例,
当集群处于安全状态时,用户对集群进行操作,这时的用户操作会进入等待状态。当集群退出安全模式时,该操作会被自动执行。
通过脚本实现:
[autoexe.sh]:
hdfs dfsadmin -safemode wait
hdfs dfs -put ~/hello.txt /user/ubuntu/data/
更改该文件的执行权限:
$> sudo chmod 777 autoexe.sh
$> ./autoexe.sh
保存名字空间/镜像融合和编辑日志
1. 进入安全模式
$> hdfs dfsadmin -safemode enter
2. 进行保存
$> hdfs dfsadmin -saveNamespace
3. 退出安全模式
$> hdfs dfsadmin -safemode leave
[实例]:
~/hadoop/dfs/name1/current$> ls # 查看镜像文件
fsimage_0000000000000000140
fsimage_0000000000000000140.md5
fsimage_0000000000000000143
fsimage_0000000000000000143.md5
$> hdfs dfs -put ~/hello.txt /user/ubuntu/data/ # 创建文件
$> hdfs dfsadmin -safemode enter
~/hadoop/dfs/name1/current$> ls
fsimage_0000000000000000143
fsimage_0000000000000000143.md5
fsimage_0000000000000000151
fsimage_0000000000000000151.md5
归档文件
1 . 启动yarn进程
$> start-yarn.sh
2 . 文件归档
$> hadoop archive -archveName myhar.har -p /uuser/ubuntu/data /user/ubuntu/my
$> hdfs dfs -lsr har: //user/ubuntu /my/myhar .har
$> hadoop dfs -cp har: //user/ubuntu /my/myhar .har /user/ubuntu/data