与Hadoop 2.x相比,它有一些新的特性如下:
-
基于JDK 1.8
-
HDFS可擦除编码
-
MR Native Task优化
-
基于Cgroup的内存隔离和IO Disk隔离
-
更改分配容器资源Container resizing
-
……
Hadoop 3 HDFS的架构
HDFS集群架构包含如下:NameNode、DataNode、Secondary NameNode
-
NameNode
接收客户端的读写服务
-
DataNode
简称为DN,主要用来存储数据内容。本地磁盘目录存储数据块Block,以文件形式分别存储在不同的DataNode节点上,同时存储Block的元数据信息文件
-
Secondary NameNode
NameNode把元数据存储在内存中,为了保证数据不丢失,需要把数据保存起来,这里的文件包含fsimage和edits。fsimage是整个元数据文件,在集群刚开始搭建的时候时空的,对元数据增删改的操作放在edits文件中,Secondary NameNode完成数据的合并操作,每隔3600秒更新一次
Hadoop 3配置
-
部署配置
Hadoop的配置涉及到以下几个文件:hadoop-env.sh、core-site.xml、hdfs-site.xml、works
hadoop-env.sh:表示Hadoop运行环境变量配置
core-site.xml:公共属性配置文件
hdfs-site.xml:HDFS属性配置文件
works:DataNode分布配置
2. 配置 hadoop
hadoop-env.sh
在这个配置文件中主要配置的信息哪下:
exprot JAVA_HOME=/usr/java/jdk1.8.0_251-amd64 #这里配置JAVA_HOME目录位置
export HDFS_NAMENODE_USER=root #这里指定了操作NameNode的用户
export HDFS_DATANODE_USER=root #这里指定了操作DataNode的用户
export HDFS_SECONDARYNAMENODE_USER=root #这里指定了操作SecondaryNameNode的用户
core-site.xml
在这个配置中主要配置hadoop的公共属性
<configuration>
<property>
<name>fs.defaultFS</name>
<value>
hdfs://node1:9820</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoopdata</value>
</property>
</configuration>
上面配置说明:fs.defaultFS指定了NameNode所在的节点,这里配置为node1,其中端口号为:9820,协议为:hdfs
hadoop.tmp.dir指定了元数据所存放的配置,未来需要查询fsiamge和edits文件时可以在这个目进行查询
hdfs-site.xml
在这个配置中主要是HDFS属性
<configuration>
<property>
<name>dfs.namenode.Secondary.http-address</name>
<value>node2:9868</value>
</property>
</configuration>
上面配置说明:dfs.namenode.Secondary.http-address表示配置SecondaryNameNode的节点,这里节点配置为node2,端口号为:9868
workers
在workers中配置DataNode节点
配置为如下:
node1
node2
node3
3. 将配置好的hadoop复制到其它的节点当中
注意:在完成了NameNode的配置后需要把这个配置好的hadoop复制到其它的节点上 去
scp -r ./hadoop-3.1.3 root@node2:/root/software/
scp -r ./hadoop-3.1.3 root@node3:/root/software/
4. 格式化hadoop
对Hadoop进行格式化
hdfs namenode -format
格式化后会在/opt/hadoopdata/dfs/name/current中看到生成fsimage文件,这个时候是不会有edits文件的
5. 启动HDFS集群
start-dfs.sh
6. 查看不同节点中的进程
jps
7. 在浏览器中访问查看HDFS监听页面
8. 向hdfs中上传文件
hdfs dfs -put test.txt / #把当前目录下的text.txt文件上传至HDSF /目录
上传完成后可以在HDFS监听页面看到上传的文件
在第一次上传时出现报错:
File /input/test.txt._COPYING_ could only be replicated to 0 nodes……
解决方法:
停止集群:stop-all.sh
删除在hdfs中配置的data目录(即在core-site.xml中配置的hadoop.tmp.dir对应文件件)下面的所有数据
重新格式化namenode
启动集群:start-dfs.sh