您的位置:首页 > 运维架构

Hadoop学习--完全分布式部署(pdsh/include&exclude/安全模式/均衡器/快照/回收站)--day02

2017-01-03 14:28 381 查看
安装准备工作
准备5台服务器,hadoop01部署namenode resourcemanager,hadoop02-hadoop03是datanode,hadoop04部署secondarynamenode

上传hadoop-2.7.3.tar.gz /soft
虚拟机Java安装完毕
卸载原有的openjdk的版本
# java -version如果看到有openjdk的字样就是说明是系统带的openjdk版本
# rpm -qa|grep jdk
用类似如下的方法删除上面的rpm包
#rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64
检查是否还有jdk1.5的版本,有就删除
#rpm -e --nodeps java-1.5.0-gcj-1.5.0.0-29.1.el6.x86_64
#解压新下载的jdk的安装包
配置环境变量
2.解压hadoop
$tar -xzvf hadoop-2.7.3.tar.gz
3.配置环境变量
编辑/etc/profile,添加如下内容
export JAVA_HOME=/soft/jdk1.8.0_111
export HADOOP_HOME=/soft/hadoop-2.7.3
export PATH=$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
并且把以上的内容写到/home/hadoop/.bashrc中
4.配置SSH免密码登陆
$ssh-keygen -t rsa (四个回车)
执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
将公钥拷贝到要免登陆的机器上
$cd /home/hadoop/.ssh
$cat id_rsa.pub >> ~/.ssh/authorized_keys
$chmod 600 authorized_keys

mkdir ./ssh
chmod 700 ~/.ssh cd ~/.ssh
ssh-keygen -t rsa
cd ~/.ssh
cat /root/.ssh/id_rsa.pub > authorized_keys
chmod 600 ~/.ssh/authorized_keys
scp authorized_keys userB:/root/.ssh/
注:A 为管理主机,B为被管理主机。
5.安装pdsh工具
#tar -jxvf pdsh-2.29.tar.bz2
#cd pdsh-2.29
#./configure --with-ssh --with-rsh --with-mrsh --with-mqshell \
--with-qshell --with-dshgroups --with-machines=/etc/pdsh/machines
#make
#make install
查看pdsh的版本号已经可使用的模块信息
$pdsh -v
查看pdsh显示当前所有加载的模块信息
$pdsh -L
命令查看user001,user002,user003主机上的时间,通过SSH
$pdsh -w ssh:user00[1-3] "date"
-g参数制定主机组,此参数用来指定一组远程主机,在编译pdsh时可以通过
“--with-dshgroups”参数来激活此选项,默认可以将一组主机列表写入一个
文件中并放到本地主机的~/.dsh/group或/etc/dsh/group目录下,这样就可
以通过“-g”参数调用了。
$pdsh -R ssh -g userhosts "date"
其中“userhosts”是一个主机列表文件,可以将此文件放在~/.dsh/group或
/etc/dsh/group目录下
$pdcp -R ssh -w vm[2-5] -r ~/mpi ~/
$pdcp -R ssh -g hostname -r ~/mpi ~/
6.本地eclipse环境设置
(1).首先解压hadoop-2.7.3.tar.gz ,创建_libs/_source/_test-source/_test-libs这四个文件夹
(2).进入hadoop-2.7.3目录中,搜索jar包文件,先把搜索到的jar包文件全部复制到_libs文件夹下
(3).进入_libs文件夹下,搜索带source文件名的包,搜索到后剪切全部放入_source文件夹下
(4).从_sources文件夹中搜索test-source的jar包,搜索到后剪切全部放入_test-source文件夹下
(5).注意上述四个文件夹要放在同一级的目录下
(6).最后在_libs文件夹中搜索test的jar包,剪切后放入到新建的_test-libs包下
(7).打开eclipse,新建一个项目,配置buildpath目录
(8).添加外部的jar包,找到_libs文件夹中所有的jar包,添加
(9).对于的源码信息要关联时,点击Attach Source到_source文件夹中对应的包
7.注意配置文件的内容对于jar包的位置
(1).core-default.xml
...\_libs\hadoop-common-2.7.2.jar
(2).hdfs-default.xml
...\_libs\hadoop-hdfs.2.7.2.jar
(3).mapred-default.xml
...\_libs\hadoop-yarn-common-2.7.2.jar
(4).yarn-default.xml
...\_libs\hadoop-yarn-common-2.7.2.jar
(5).注意copy上面所有的内容到_conf文件夹中新建对于的同名的文件中
以便查找配置项进行配置
8.配置辅助名称节点
从_conf文件中查找.xml文件结尾的内容中secondary字样,找到配置辅助名称节点的内容项
在_conf\hdfs-default.xml中,发现有dfs.namenode.secondary.http-address这个key字样
修改hdfs-site.xml文件内容,增加如下内容
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop05:50090</value>
<description>
The secondary namenode http server address and port.
</description>
9.配置hadoop临时目录的参数
从_conf文件中查找.xml文件结尾的内容中local和hadoop.tmp.dir字样,找到配置项内容的位置
在_conf\core-default.xml中,发现有<name>hadoop.tmp.dir</name>的字段
修改core-site.xml,添加如下的内容(具体目录可以自己定义,这里暂时没有改变)
<property>
<name>hadoop.tmp.dir</name>
<value>/tmp/hadoop-${user.name}</value>
<description>A base for other temporary directories.</description>
</property>
10.配置namenode的数据存放目录
同理在_conf\hdfs-default.xml中找到dfs.namenode.name.dir
修改hdfs-site.xml文件内容,增加如下内容
<property>
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/name</value>
<description>Determines where on the local filesystem the DFS name node
should store the name table(fsimage). If this is a comma-delimited list
of directories then the name table is replicated in all of the
directories, for redundancy. </description>
</property>
11.同理配置datanode的数据存放目录
修改hdfs-site.xml文件内容,增加如下内容
<property>
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/data</value>
</property>
12.同理配置secondarynamenode的数据目录
修改hdfs-site.xml文件内容,增加如下内容
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/namesecondary</value>
</property>
13.修改默认块大小
修改hdfs-site.xml文件内容,增加如下内容
<property>
<name>dfs.blocksize</name>
<value>134217728</value>
</property>
14.修改core-site.xml,添加如下信息
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop01/</value>
</property>
</configuration>
15.修改hdfs-site.xml
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
16.修改mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
17.修改yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop01</value>
</property>
<!-- reducer获取数据的方式 -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
18.修改slaves
hadoop02
hadoop03
hadoop04
19.命令手动启动namenode和datanode,其实hadoop-daemons.sh脚本是用到了hadoop-daemon.sh的脚本
该命令只能在namenode的机器上执行
$hadoop-daemon.sh start namenode //启动namenode进程
$hadoop-daemon.sh stop namenode //关闭namenode进程

$hadoop-daemon.sh start datanode //在datanode节点上启动该节点上的datanode进程
$hadoop-daemon.sh stop datanode
$hadoop-daemons.sh start datanode //可以在任何namenode/datanode/secondarynamenode上执行
$hadoop-daemons.sh stop datanode
$hadoop-daemon.sh start secondarynamenode //只能在secondarynamenode上执行启动进程

和该命令类似的有yarn-daemons.sh 和yarn-daemon.sh
20.查看节点信息位置
$hdfs getconf -namenodes //查看集群中namenode是哪台机器
$hdfs getconf -secondarynamenodes //查看集群中secondarynamenode是哪台机器

21.端口信息
HDFS中配置的namenode
rpc //8020
webui //50070
datanode
rpc //8032
webui //50075
secondarynamenode
webui //50090
historyServer
webui //19888
resourcemanager
webui //8088
nodemanager
webui //8042
linux系统中可用netstat -tuanlp这个命令来查看所有的内部端口、外部端口连接、
TCP/UDP的所有信息
22.修改日志存放路径
默认是在tar包目录下面的log文件夹
修改tar包etc配置文件下的hadoop-env.sh文件夹
添加:
export HADOOP_LOG_DIR=/var/log/hadoop
查看分析日志首先看的是.log文件, .out文件默认保留5个,会自动滚动覆盖
23.四大模块对于的配置文件
(1).common
hadoop-common-xxx.jar
core-site.xml
core-default.xml
(2).hdfs
hdfs-site.xml
hdfs-default.xml
(3).mapreduce
mapred-site.xml
mapred-default.xml
(4).yarn
yarn-site.xml
yarn-default.xml
24.Namenode和Datanode数据存放位置的说明
(1).Namenode的数据存放位置配置
在hdfs-default.xml中有如下参数可以修改,可以制定多个目录,这样就会在本机存在
多个目录存放的一样的namenode的镜像文件数据,一定程度上保证了数据的安全性,并行写
<property>
<name>dfs.namenode.name.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/name</value>
<description>Determines where on the local filesystem the DFS name node
should store the name table(fsimage). If this is a comma-delimited list
of directories then the name table is replicated in all of the
directories, for redundancy. </description>
</property>
名称配置多个目录在于更可靠;
每个目录存放的内容都是相同的.
(2).Datanode的数据存放位置配置
数据节点配置多个目录,不是副本;
每个目录存放的内容不同,用","号分割
在hdfs-default.xml中有如下参数可以修改
<property>
<name>dfs.datanode.data.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/data</value>
<description>Determines where on the local filesystem an DFS data node
should store its blocks. If this is a comma-delimited
list of directories, then data will be stored in all named
directories, typically on different devices. The directories should be tagged
with corresponding storage types ([SSD]/[DISK]/[ARCHIVE]/[RAM_DISK]) for HDFS
storage policies. The default storage type will be DISK if the directory does
not have a storage type tagged explicitly. Directories that do not exist will
be created if local filesystem permission allows.
</description>
</property>
(3).secondarynamenode数据存放位置
可以存放多个目录,存放的效果和存放namenode数据的多个目录都是一样的
<property>
<name>dfs.namenode.checkpoint.dir</name>
<value>file://${hadoop.tmp.dir}/dfs/namesecondary</value>
<description>Determines where on the local filesystem the DFS secondary
name node should store the temporary images to merge.
If this is a comma-delimited list of directories then the image is
replicated in all of the directories for redundancy.
</description>
</property>
25.Commission|Decommission服役和退役节点的配置以及节点refreshNodes
三个配置文件的关系:
salves文件规定的主机是启动的时候允许启动相应的datanode进行,但是不能保证是否
能够连接到namenode上。
真正保证能够连接到namenode上的配置文件是在hdfs-defaults.xml中的dfs.hosts这个参数值决定的,
这个值指向的是一个文件,文件中记录了哪些主机允许连接到namenode上,如果为空,所有的机器都是
被允许的。
在hdfs-defaults.xml中有个dfs.hosts.exclude参数,这个参数上配置的文件决定了排除哪些机器连接到
namenode的,也就是不允许连接到namenode上面的机器列表。
当include文件和exclude文件同时存在的时候:
include exclude 描述
no no 数据节点无法连接到名称节点
no yes 数据节点无法连接到名称节点
yes no 数据节点可以连接到名称节点
yes yes 数据节点可以连接到名称节点,但会退役

测试:
编辑配置文件
[hdfs-site.xml]
dfs.hosts=/soft/hadoop/etc/dfs-hosts-include.conf
dfs.hosts.exclude=/soft/hadoop/etc/dfs-hosts-exclude.conf
分发hdfs-site.xml文件到所有的节点
刷新节点,在namenode上面执行
$hdfs dfsadmin -refreshNodes
26.查看VERSION数据
clusterID=xxx (namenode==datanode)
storageID=xxx (datanode)
cTime:集群创建时间
acl:访问控制列表
layoutVersion:是一个负整数,描述HDFS的永久性的数据结构(布局)版本
namespaceID:是文件系统的唯一的标识符,是文件系统首次格式化时设置的,任何datanode在注册到namenode之前
都不知道namepaceID值,因此namenode可以使用该属性鉴别新建的datanode
27.安全模式
(1).namenode启动时,合并image和edit成新的image,并产生新的edit log
(2).整个过程出于safe模式下,客户端只能读取
(3).namenode安全模式操作
$hdfs dfsadmin -safemode get //查看是什么状态
$hdfs dfsadmin -safemode enter //进入
$hdfs dfsadmin -safemode leave //离开
$hdfs dfsadmin -safemode wait //等待
(4).执行saveNamespace命令使得image文件和edit立即进行合并,生成新的image文件和edit日志,但是2nn还是老的
28.手动保存镜像文件
$hdfs dfsadmin -fetchImage ~/ //保存镜像至当前home目录下
可以在任何节点机器上执行,不要在安全模式下,相当于拷贝最新的image镜像,就是namenode上最新的image文件
29.手动保存元数据
$hdfs dfsadmin -metasave xxx.meta
可以在任何节点上面执行上面的命令,但是数据保存在namenode的log文件下
默认存放在{HADOOP_HOME}/logs/
30.文件系统健康检查
$hdfs fsck /
查找HDFS某个文件的大小,块的信息,所在节点的信息
$hdfs fsck /user/hadoop/xxxx.files -files -blocks -racks
webui查看数据节点上块的信息:http://hadoop02:50075/blockScannerReport
31.启动均衡器
$start-balancer.sh
启动均衡器,让集群在数据存储上更加平均,提高整个集群的性能
32.HDFS命令
从本地上传文件并删除本地的文件
$hadoop fs -moveFromLocal hello.txt /usr/ubuntu/data/
删除HDFS上面的文件
$hadoop fs -rm -R /usr/ubuntu/data/had*
查看hdfs上面文件的内容
$hadoop fs -cat /user/ubuntu/data/had*
查看目录的统计信息,统计目录数量/文件数/字节数
$hadoop fs -count /x/x/x/
追加HDFS上面的文件内容
$hadoop fs -appendToFile name.txt /user/ubuntu/data/hello.txt
33.快照
首先开启快照
$hdfs dfsadmin -allowSnapshot /user/ubuntu/data
针对目录进行snapshot,存放的快照文件在做快照目录下面的.隐藏文件
$hadoop fs -createSnapshot /user/ubuntu/data snapshot-1
关闭快照属性
$hdfs dfsadmin -disallowSnapshot /usr/ubuntu/data
34.回收站
(1).默认是0秒,意味着禁用回收站
(2).设置文件在回收站的驻留时间
[core-site.xml]
fs.trash.interval=1 //分钟数计算
(3).通过shell命令删除的文件,会进入trash
(4).每个用户都有自己的回收站(目录)
$/usr/ubuntu/.Trash
(5).编程方式删除不进入回收站,立即删除,可以调用
moveToTrash()方法,返回false,说明禁用回收站或者已经在站中
(6).恢复文件
将.Trash目录的文件移动出来即可
hadoop fs -mv /user/ubuntu/.Trash/xx/xx/xx data/
(7).清空回收站
hadoop fs -expunge
(8).测试删除回收站
hadoop fs -rm -R /user/ubuntu/.Trash
35.目录配合和磁盘空间配额
$hdfs dfsadmin -setQuota 2 /user/ubuntu/data/day //指该目录下可以存在的文件数或目录的数量
$hdfs dfsadmin -setSpaceQuota 20 /user/ubuntu/data/day //配置目录的磁盘空间配额为20字节
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  回收站 快照 hadoop