Skip to content
This repository was archived by the owner on Jul 1, 2025. It is now read-only.

Conversation

hy00nc
Copy link
Member

@hy00nc hy00nc commented Jun 10, 2019

JIRA: NEMO-351: Empowering Nemo with fast I/O using Apache Crail

Major changes:

  • Users can specify -remote_option as crail if they intend to use CrailFileStore during their job execution. (Crail configuration and deployment has to take place.)

yooneo0124 and others added 30 commits February 14, 2019 10:28
This reverts commit 8c7b26a.
This reverts commit 1127cf7.
case LOCAL_FILE:
return DataStoreProperty.Value.LocalFileStore;
case REMOTE_FILE:
return DataStoreProperty.Value.GlusterFileStore;
Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually, I got stuck here without a solution: Converting the ControlMessage REMOTE_FILE to either CrailFileStore or GlusterFileStore. For now, I just substituted GlusterFileStore to CrailFileStore, and let GlusterFileStore be converted to LocalFileStore, which absolutely isn't the right way :( Any suggestions?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'd use two variables: GLUSTER_FILE and CRAIL_FILE

@bgchun bgchun requested review from johnyangk and seojangho June 10, 2019 09:42
Copy link
Contributor

@johnyangk johnyangk left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks @hy00nc. It's great to integrate Nemo and Crail.
Please take a look at my comments, and fix the conflicts with the master.

pom.xml Outdated
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
<dependency>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you remove L117-L160?
I'm not familiar with Crail, but perhaps crail-client is sufficient for Nemo to use Crail.
It'd be great to use minimum dependencies.

Copy link
Member Author

@hy00nc hy00nc Jun 24, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I first tried using only crail-client, but ClassNotFoundException occurs. Sadly, I am not sure why it works this way, so I just put all modules Crail provides (in case the specific module is needed).

cl.registerShortNameOfClass(JobConf.MaxTaskAttempt.class);
cl.registerShortNameOfClass(JobConf.FileDirectory.class);
cl.registerShortNameOfClass(JobConf.GlusterVolumeDirectory.class);
cl.registerShortNameOfClass(JobConf.CrailVolumeDirectory.class);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you file a new JIRA issue to convert JobConf parameters for directory paths (FileDirectory, GlusterVolumeDirectory, CrailVolumeDirectory) to DataStoreProperty parameters? To do this, the type of the possible values of the DataStoreProperty should also change from enum to class.

I suggest this change, because I think we should aim to integrate into the IR DAG as many configuration parameters as possible. Another benefit is that it saves the trouble of having to configure both JobConf and IR DAG to use a specific Crail/Gluster/File directory. Finally, this enables us to configure different directories for different IREdges.

A related issue is integrating the executor_json parameter into the IR DAG: https://issues.apache.org/jira/browse/NEMO-382

* Interface for remote block stores (e.g., GlusterFS, CrailFS...).
*/

@DefaultImplementation(GlusterFileStore.class)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Remove. I don't see a particular reason to prefer Gluster over Crail.

Copy link
Member Author

@hy00nc hy00nc Jun 24, 2019

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actually RemoteFileStore is constructed by default in every job, and using Crail as the default would cause every job to fail when there is no CrailFileSystem detected on the nodes that run the job. So maybe GlusterFileStore can be the default?

return Optional.of(block);
} catch (final IOException e) {
throw new BlockFetchException(e);
} catch (Exception e) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please use a more specific Exception class.

if (fs.lookup(filePath).get() == null) {
return Optional.empty();
} else {
try {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why use a try here, when we're already in the try clause starting at L110?

}
} catch (final IOException e) {
throw new BlockFetchException(e);
} catch (final Exception e) {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ditto.

@bgchun
Copy link

bgchun commented Dec 1, 2020

Any update on this PR?

@yooneo0124
Copy link
Contributor

@wonook Let's close stale PRs. Do you plan to merge this to master?

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

4 participants