客户端发起读数据的请求;
告诉 NameNode 要读那个文件;
NameNode 返回 block 信息列表(包括要读取的数据在那个机器上);
到指定的机器上读取具体的数据;
DataNode 根据 block 信息找到数据的存储位置并返回数据给客户端;
客户端读完数据之后告诉 NameNode 已经读取完成;
三、HDFS 常用配置文件 3.1 hdfs-site.xml name value descriptiondfs.datanode.data.dir /data1/dfs,/data2/dfs,/data3/dfs,/data4/dfs,/data5/dfs,/data6/dfs datanode本地文件存放地址
dfs.replication 3 副本数
dfs.namenode.name.dir /data1/dfsname,/data2/dfsname,/data3/dfsname namenode本地文件存放地址
dfs.support.append TRUE 是否支持追加,但不支持并发线程往里追加
dfs.permissions.enabled FALSE 是否开启目录权限
dfs.nameservices ns1 提供服务的NS逻辑名称,与core-site.xml里的对应,可以配置多个命名空间的名称,使用逗号分开即可。
dfs.ha.namenodes.[nameservice ID] nn1,nn2 命名空间中所有NameNode的唯一标示名称。可以配置多个,使用逗号分隔。该名称是可以让DataNode知道每个集群的所有NameNode。
dfs.namenode.rpc-address.ns1.nn1 nn1.hadoop:9000 指定NameNode的RPC位置
dfs.namenode.http-address.ns1.nn1 nn1.hadoop:50070 指定NameNode的Web Server位置
dfs.namenode.rpc-address.ns1.nn2 nn2.hadoop:9000 指定NameNode的RPC位置
dfs.namenode.http-address.ns1.nn2 nn2.hadoop:50070 指定NameNode的Web Server位置
dfs.namenode.shared.edits.dir qjournal://nn1.hadoop:8485;nn2.hadoop:8485/ns1 指定用于HA存放edits的共享存储,通常是namenode的所在机器
dfs.journalnode.edits.dir /data/journaldata/ journaldata服务存放文件的地址
fs.trash.interval 2880 垃圾回收周期,单位分钟
dfs.blocksize 134217728 块的大小
dfs.datanode.du.reserved 2147483648 每个存储卷保留用作其他用途的磁盘大小
dfs.datanode.fsdataset.volume.choosing.policy org.apache.hadoop.hdfs.server.datanode.fsdataset.AvailableSpaceVolumeChoosingPolicy datanode数据副本存放的磁盘选择策略,、有2种方式一种是轮询方式 (org.apache.hadoop.hdfs.server.datanode.fsdataset.RoundRobinVolumeChoosingPolicy,为默认方式),另一种为选择可用空间足够多的磁盘存储方式 (org.apache.hadoop.hdfs.server.datanode.fsdataset.AvailableSpaceVolumeChoosingPolicy)。
dfs.datanode.available-space-volume-choosing-policy.balanced-space-threshold 2147483648 当选择可用空间足够多的磁盘存储方式才生效,hdfs计算最大可用空间-最小可用空间的差值,如果差值小于此配置,则选择轮询方式存储
3.2 core-site.xml name value description
io.native.lib.available true 开启本地库支持
fs.defaultFS hdfs://ns1 客户端连接HDFS时,默认的路径前缀。默认文件服务的协议和NS(nameservices)逻辑名称,和hdfs-site里的对应此配置替代了1.0里的fs.default.name
io.compression.codecs org.apache.hadoop.io.compress.GzipCodec,org.apache.hadoop.io.compress.DefaultCodec,org.apache.hadoop.io.compress.BZip2Codec,org.apache.hadoop.io.compress.SnappyCodec 相应编码的操作类,用逗号分隔
ha.zookeeper.quorum nn1.hadoop:2181,nn2.hadoop:2181,s1:2181 HA使用的zookeeper地址
3.3 slaves
slaves文件里面记录的是集群里所有DataNode的主机名
3.4 hadoop-env.shHADOOP_CLASSPATH:hadoop的classpath
JAVA_LIBRARY_PATH:java加载本地库的地址
HADOOP_HEAPSIZE:java虚拟机使用的最大内存
HADOOP_OPTS:hadoop启动公用参数
HADOOP_NAMENODE_OPTS:namenode专用参数
HADOOP_DATANODE_OPTS:datanode专用参数
HADOOP_CLIENT_OPTS:hadoop client专用参数