[
https://issues.apache.org/jira/browse/HDFS-10285?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16283263#comment-16283263
]
Chris Douglas commented on HDFS-10285:
--------------------------------------
As [~umamaheswararao] mentioned earlier, HDFS-12090 proposes to build on the
SPS. [~virajith] wrote a
[prototype|https://github.com/Microsoft-CISL/hadoop-prototype/tree/SPS-9806]
demonstrating the core of the design. The Mover is not sufficient; we're
banking on a more robust solution for HSM, and wherever it lives, we need
something like the SPS.
NameNode load is important, but the decision to implement the balancer as an
external process [predates|https://issues.apache.org/jira/browse/HADOOP-1652]
many scalability and performance improvements. To pick one salient example, it
precedes running with a [read-write
lock|https://issues.apache.org/jira/browse/HDFS-1093] by almost three years.
The Mover (IIRC) started with the balancer code. Scans are outside of the
NameNode today due to a decade-old analysis, and because to move scans into the
NameNode, features added subsequently would need to be reexamined and possibly
redesigned. Also, subsequent extensions to- and comfort with- the balancer make
replacing it unessential. This particular precedent for scans is not a reliable
guide, on its own. We can be confident that adding load to the NN will drop
throughput in some cases, but without benchmarks we don't know whether those
cases are blockers. Have any benchmarks been run, particularly with the SPS
disabled?
Also, the state-of-the-art for HSM supports neither sophisticated deployment
nor failover. Many new services and features in YARN are available in preview
before they even support secure deployments. The NameNode acquired these
features over years; insisting that services implement that full complement of
capabilities before anyone can be certain the service is _useful_ is not
workable, particularly in an open-source project. On that subject, if this
approach doesn't work out, deleting a separate server is much easier than
extracting a feature from the NN. Offhand, I can't think of a single example of
the latter. The aspect-oriented fault injection maybe, but that was both
outside the NN and only for testing.
[~rakeshr] started to quantify the impact, which will help to either
tranquilize anxiety about this feature or define thresholds for accepting it.
Skimming the implementation, some of this could be extracted into an external
service, but it would not be straightforward. Specifically, the SPS keeps
references to the namesystem and block manager. To [~anu]'s earlier point,
"smart" policies using internal data will be very difficult to extract into a
separate service later, should that become necessary or desirable.
Would it be possible to extract an API for the SPS to other NN components
(particularly the namesystem, block manager, and datanode manager)? That might
make the couplings more explicit, ideally so the interface would be sufficient
as an RPC protocol, if the SPS were moved outside the NN.
bq. I’m curious why it isn’t just part of the standard replication monitoring.
If the DN is told to replicate to itself, it just does the storage movement.
In addition to the points that Uma raised, for in-memory and provided replicas,
we'd like to support more than one replica per DN (HDFS-9810). Intra-DN
rebalancing also may not benefit from deleting replicas until the volume is
short on space. Copying a temporarily hot replica to SSD, then back to HDD when
it's cold again is also avoidable overhead, if the SSD replica just be deleted.
Agreed, it does seem like this is one operation with parameters, not separate
mechanisms.
> Storage Policy Satisfier in Namenode
> ------------------------------------
>
> Key: HDFS-10285
> URL: https://issues.apache.org/jira/browse/HDFS-10285
> Project: Hadoop HDFS
> Issue Type: New Feature
> Components: datanode, namenode
> Affects Versions: HDFS-10285
> Reporter: Uma Maheswara Rao G
> Assignee: Uma Maheswara Rao G
> Attachments: HDFS-10285-consolidated-merge-patch-00.patch,
> HDFS-10285-consolidated-merge-patch-01.patch,
> HDFS-10285-consolidated-merge-patch-02.patch,
> HDFS-10285-consolidated-merge-patch-03.patch,
> HDFS-SPS-TestReport-20170708.pdf,
> Storage-Policy-Satisfier-in-HDFS-June-20-2017.pdf,
> Storage-Policy-Satisfier-in-HDFS-May10.pdf,
> Storage-Policy-Satisfier-in-HDFS-Oct-26-2017.pdf
>
>
> Heterogeneous storage in HDFS introduced the concept of storage policy. These
> policies can be set on directory/file to specify the user preference, where
> to store the physical block. When user set the storage policy before writing
> data, then the blocks could take advantage of storage policy preferences and
> stores physical block accordingly.
> If user set the storage policy after writing and completing the file, then
> the blocks would have been written with default storage policy (nothing but
> DISK). User has to run the ‘Mover tool’ explicitly by specifying all such
> file names as a list. In some distributed system scenarios (ex: HBase) it
> would be difficult to collect all the files and run the tool as different
> nodes can write files separately and file can have different paths.
> Another scenarios is, when user rename the files from one effected storage
> policy file (inherited policy from parent directory) to another storage
> policy effected directory, it will not copy inherited storage policy from
> source. So it will take effect from destination file/dir parent storage
> policy. This rename operation is just a metadata change in Namenode. The
> physical blocks still remain with source storage policy.
> So, Tracking all such business logic based file names could be difficult for
> admins from distributed nodes(ex: region servers) and running the Mover tool.
> Here the proposal is to provide an API from Namenode itself for trigger the
> storage policy satisfaction. A Daemon thread inside Namenode should track
> such calls and process to DN as movement commands.
> Will post the detailed design thoughts document soon.
--
This message was sent by Atlassian JIRA
(v6.4.14#64029)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]