CProject

client模块

位置信息

CrailUtils.java文件中
该类位于client模块的org.apache.crail.utils包下

    public static CrailLocationClass getLocationClass() throws UnknownHostException{
    	return CrailLocationClass.get(InetAddress.getLocalHost().getCanonicalHostName().hashCode());
    }

1.求出localClass

CoreDataStore.java
该类位于client模块的org.apache.crail.core包下

public CoreDataStore(CrailConfiguration conf) throws Exception {
        。。。
        // 构造方法。。。省略不相关代码
		// client
		this.localClass = CrailUtils.getLocationClass();
        。。。
}

2.返回localClass

public CrailLocationClass getLocationClass() {
		return localClass;              
	}

3.应用localClass

CrailDispatcher.scala
该类位于crail-spark-io模块的org.apache.spark.storage包下

class CrailDispatcher () extends Logging {     //  无参主构造器
    。。。
    //  首先取默认值0
    var localLocationClass : CrailLocationClass = CrailLocationClass.DEFAULT
    。。。

应用1

    try {
      val hostFile = hostsDir + "/" + fs.getLocationClass().value();
      logInfo("creating hostFile " + hostFile)
      println("------" + fs.getLocationClass().value() + "------")//-1485063999             	     
      fs.create(hostFile, CrailNodeType.DATAFILE, CrailStorageClass.DEFAULT, CrailLocationClass.DEFAULT, true).get().syncDir()
      logInfo("creating hostFile done " + hostFile)
    } catch {
      case e: Exception =>
        logInfo("exception e " + e.getMessage)
        println("------" + e.getMessage + "-------")
        e.printStackTrace()
    }

应用2

  private def init(): Unit = {
    。。。
    // 接着,调用CoreDataStore.getLocationClass()方法,求出实际值
    if (mapLocationAffinity){
      localLocationClass = fs.getLocationClass()
    }
    。。。

分配内存

[crail如何分配内存](https://blog.csdn.net/qq_29573903/article/details/82997155/#)

文件操作

创建DATAFILE

猜你喜欢

转载自blog.csdn.net/qq_29573903/article/details/82981723