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/#)