准备三台centos7虚拟机,设置静态IP(192.168.1.103,192.168.1.104,192.168.1.105)
主机名称分别用hadoop3,hadoop4,hadoop5命名
三台机器安装好java环境,并准备好上一篇博客中编译好的hadoop压缩包
hadoop3 | hadoop4 | hadoop5 | |
---|---|---|---|
HDFS | NameNode, DataNode | DataNode | SecondaryNameNode, DataNode |
YARN | NodeManager | NodeManager, ResourceManager | NodeManager |
可以先配置好一台之后复制镜像到另外两台,所以我们先准备好hadoop3节点,hadoop4和hadoop5节点复制hadoop3环境即可
<!-- 指定HDFS中NameNode的地址 -->
fs.defaultFS</name>
hdfs://hadoop3:9000</value>
</property>
<!-- 指定hadoop运行时产生文件的存储目录 -->
hadoop.tmp.dir</name>
/opt/software/hadoop-2.7.2/data/tmp</value>
</property>
export JAVA_HOME=/opt/software/jdk1.8.0_171
<!--配置节点数-->
dfs.replication</name>
3</value>
</property>
<!--配置Secondary NameNode-->
dfs.namenode.secondary.http-address</name>
hadoop5:50090</value>
</property>
</configuration>
hadoop3
hadoop4
hadoop5
export JAVA_HOME=/opt/software/jdk1.8.0_171
<!-- reducer获取数据的方式 -->
yarn.nodemanager.aux-services</name>
mapreduce_shuffle</value>
</property>
<!-- 指定YARN的ResourceManager的地址 -->
yarn.resourcemanager.hostname</name>
hadoop4</value>
</property>
<!-- 指定mr运行在yarn上 -->
mapreduce.framework.name</name>
yarn</value>
</property>
克隆hadoop3到 hadoop4节点和hadoop5中
rm -rf data/
rm -rf logs/
root@hadoop3 hadoop-2.7.2]# bin/hdfs namenode –format
在三个节点分别执行如下命令
# 开启如下组件:NameNode,DataNode,SecondNameNode
sbin/start-dfs.sh
在hadoop4节点启动yarn
# 开启如下组件: ResourceManager,NodeManager
sbin/start-yarn.sh
三个节点都需要执行
首先安装ntp
yum install ntp
安装完毕之后,启动服务
systemctl start ntpd.service
设置开机自启动
systemctl enable ntpd.service
修改hadoop3的ntp.conf配置文件(/etc/ntp.conf)
将以下注释取消,启用该配置
server 127.127.1.0
fudge 127.127.1.0 stratum 10
修改配置文件/etc/sysconfig/ntpd(让硬件内容与系统时间同步)
启动ntpd服务
systemctl start ntpd.service
在其它服务器配置与hadoop3同步,配置一分钟与时间服务器同步一次
使用contab -e任务调度
crontab -e
*/1 * * * * /usr/sbin/ntpdate hadoop3
随着数据量越来越大,在一个操作系统管辖的范围内存不下了,那么就分配到更多的操作系统管理的磁盘中,但是不方便管理和维护,迫切需要一种系统来管理多台机器上的文件,这就是分布式文件管理系统。HDFS 只是分布式文件管理系统中的一种。
HDFS,它是一个文件系统,用于存储文件,通过目录树来定位文件;其次,它是分布式的,由很多服务器联合起来实现其功能,集群中的服务器有各自的角色。
HDFS 的设计适合一次写入,多次读出的场景,且不支持文件的修改。适合用来做数据分析,并不适合用来做网盘应用。
可构建在廉价机器上,通过多副本机制,提高可靠性。
不适合低延时数据访问,比如毫秒级(Mysql)的存储数据,是做不到的。
这种架构主要由四个部分组成,分别为HDFS Client、NameNode、DataNode和Secondary NameNode
并非NameNode的热备。当NameNode挂掉的时候,它并不能马上替换NameNode并提供服务
HDFS中的文件在物理上是分块存储(block), 块的大小可以通过配置参数(dfs.blocksize)来规定,默认大小在hadoop2.x版本中是128M,老版本中是64M
-help:输出这个命令参数
hadoop fs -help rm
-ls: 显示目录信息
hadoop fs -ls /
-mkdir:在 hdfs 上创建目录
hadoop fs -mkdir -p /user/ root /test
-moveFromLocal 从本地剪切粘贴到 hdfs
touch test01.txt
hadoop fs -moveFromLocal ./ test01.txt /user/root/test
–appendToFile :追加一个文件到已经存在的文件末尾
vim test02.txt //键入文本内容
hadoop fs -appendToFile test02.txt /user/root/test/test01.txt
-cat :显示文件内容
hadoop fs –cat /user/root/test/test01.txt
-tail:显示一个文件的末尾
在这里插入代码片
-tail:显示一个文件的末尾
hadoop fs -tail /user/root/test/test01.txt
-copyFromLocal:从本地文件系统中拷贝文件到 hdfs 路径去
hadoop fs -copyFromLocal test02.txt /user/root/test
-copyToLocal:从 hdfs 拷贝到本地
hadoop fs -copyToLocal /user/root/test/test01.txt ./test01.txt
-cp :从 hdfs 的一个路径拷贝到 hdfs 的另一个路径
hadoop fs -cp /user/root/test/test01.txt /testCp.txt
-mv:在 hdfs 目录中移动文件
hadoop fs -mv /testCp.txt /user/root/test/
-get:等同于 copyToLocal,就是从 hdfs 下载文件到本地
hadoop fs -get /user/root/test/test01.txt ./
-getmerge :合并下载多个文件,比如 hdfs 的目录 /aaa/下有多个文件:log.1,log.2,log.3,…
hadoop fs -getmerge /user/root/test/* ./bendi.txt
-put:等同于 copyFromLocal(上传)
hadoop fs -put ./bendi.txt /user/root/test/
-rm:删除文件或文件夹
hadoop fs -rm /user/root/test/bendi.txt
-rmdir:删除空目录
hadoop fs -mkdir /test
hadoop fs -rmdir /test
-du 统计文件夹的大小信息
hadoop fs -du -s -h /user/root/test
hadoop fs -du -h /user/root/test