DatanodeStorage toDatanodeStorage() { return new DatanodeStorage(storageID, DatanodeStorage.State.NORMAL, storageType); }
DatanodeStorageInfo(DatanodeDescriptor dn, DatanodeStorage s) { this(dn, s.getStorageID(), s.getStorageType(), s.getState()); }
/** Create an ID for this storage. * @return true if a new storage ID was generated. * */ public static boolean createStorageID( StorageDirectory sd, boolean regenerateStorageIds, Configuration conf) { final String oldStorageID = sd.getStorageUuid(); if (sd.getStorageLocation() != null && sd.getStorageLocation().getStorageType() == StorageType.PROVIDED) { // Only one provided storage id is supported. // TODO support multiple provided storage ids sd.setStorageUuid(conf.get(DFSConfigKeys.DFS_PROVIDER_STORAGEUUID, DFSConfigKeys.DFS_PROVIDER_STORAGEUUID_DEFAULT)); return false; } if (oldStorageID == null || regenerateStorageIds) { sd.setStorageUuid(DatanodeStorage.generateUuid()); LOG.info("Generated new storageID {} for directory {} {}", sd .getStorageUuid(), sd.getRoot(), (oldStorageID == null ? "" : (" to replace " + oldStorageID))); return true; } return false; }
public void updateFromStorage(DatanodeStorage storage) { state = storage.getState(); storageType = storage.getStorageType(); }
public void updateStorage(DatanodeDescriptor node, DatanodeStorage storage) { if (isProvidedStorage(storage.getStorageID())) { if (StorageType.PROVIDED.equals(storage.getStorageType())) { node.injectStorage(providedStorageInfo); return; } else { LOG.warn("Reserved storage {} reported as non-provided from {}", storage, node); } } node.updateStorage(storage); }
SimulatedStorage(long cap, DatanodeStorage.State state) { capacity = cap; dnStorage = new DatanodeStorage( "SimulatedStorage-" + DatanodeStorage.generateUuid(), state, StorageType.DEFAULT); this.volume = new SimulatedVolume(this); }
/** * @deprecated Use {@link #getStorage()} instead */ @Deprecated public String getStorageID() { return storage.getStorageID(); }
private static long getCapacity(DatanodeStorageReport report, StorageType t) { long capacity = 0L; for(StorageReport r : report.getStorageReports()) { if (r.getStorage().getStorageType() == t) { capacity += r.getCapacity(); } } return capacity; }
@Override public void verifyClusterPostUpgrade(MiniDFSCluster cluster) throws IOException { // Verify that a GUID-based storage ID was generated. final String bpid = cluster.getNamesystem().getBlockPoolId(); StorageReport[] reports = cluster.getDataNodes().get(0).getFSDataset().getStorageReports(bpid); assertThat(reports.length, is(1)); final String storageID = reports[0].getStorage().getStorageID(); assertTrue(DatanodeStorage.isValidStorageId(storageID)); if (expectedStorageId != null) { assertThat(storageID, is(expectedStorageId)); } } });
private static boolean createStorageID(StorageDirectory sd, int lv, Configuration conf) { // Clusters previously upgraded from layout versions earlier than // ADD_DATANODE_AND_STORAGE_UUIDS failed to correctly generate a // new storage ID. We check for that and fix it now. final boolean haveValidStorageId = DataNodeLayoutVersion.supports( LayoutVersion.Feature.ADD_DATANODE_AND_STORAGE_UUIDS, lv) && DatanodeStorage.isValidStorageId(sd.getStorageUuid()); return createStorageID(sd, !haveValidStorageId, conf); }
private void validateStorageState(StorageReport[] storageReports, DatanodeStorage.State state) { for (StorageReport storageReport : storageReports) { DatanodeStorage storage = storageReport.getStorage(); assertThat(storage.getState(), is(state)); } }
SimulatedStorage(long cap, DatanodeStorage.State state) { capacity = cap; dnStorage = new DatanodeStorage( "SimulatedStorage-" + DatanodeStorage.generateUuid(), state, StorageType.DEFAULT); }
DatanodeStorageInfo getProvidedStorage( DatanodeDescriptor dn, DatanodeStorage s) { dns.put(dn.getDatanodeUuid(), dn); dnR.add(dn); return storageMap.get(s.getStorageID()); }
private static long getMaxRemaining(DatanodeStorageReport report, StorageType t) { long max = 0L; for(StorageReport r : report.getStorageReports()) { if (r.getStorage().getStorageType() == t) { if (r.getRemaining() > max) { max = r.getRemaining(); } } } return max; }
public void updateFromStorage(DatanodeStorage storage) { state = storage.getState(); storageType = storage.getStorageType(); }
private static boolean createStorageID(StorageDirectory sd, int lv) { // Clusters previously upgraded from layout versions earlier than // ADD_DATANODE_AND_STORAGE_UUIDS failed to correctly generate a // new storage ID. We check for that and fix it now. final boolean haveValidStorageId = DataNodeLayoutVersion.supports( LayoutVersion.Feature.ADD_DATANODE_AND_STORAGE_UUIDS, lv) && DatanodeStorage.isValidStorageId(sd.getStorageUuid()); return createStorageID(sd, !haveValidStorageId); }
/** * @param dn datanode descriptor * @param s data node storage * @return the {@link DatanodeStorageInfo} for the specified datanode. * If {@code s} corresponds to a provided storage, the storage info * representing provided storage is returned. * @throws IOException */ DatanodeStorageInfo getStorage(DatanodeDescriptor dn, DatanodeStorage s) throws IOException { if (providedEnabled && storageId.equals(s.getStorageID())) { if (StorageType.PROVIDED.equals(s.getStorageType())) { if (providedStorageInfo.getState() == State.FAILED && s.getState() == State.NORMAL) { providedStorageInfo.setState(State.NORMAL); LOG.info("Provided storage transitioning to state " + State.NORMAL); } if (dn.getStorageInfo(s.getStorageID()) == null) { dn.injectStorage(providedStorageInfo); } processProvidedStorageReport(); return providedDescriptor.getProvidedStorage(dn, s); } LOG.warn("Reserved storage {} reported as non-provided from {}", s, dn); } return dn.getStorageInfo(s.getStorageID()); }
/** * @deprecated Use {@link #StorageReceivedDeletedBlocks( * DatanodeStorage, ReceivedDeletedBlockInfo[])} instead */ @Deprecated public StorageReceivedDeletedBlocks(final String storageID, final ReceivedDeletedBlockInfo[] blocks) { this.storage = new DatanodeStorage(storageID); this.blocks = blocks; }
public static DatanodeDescriptor getDatanodeDescriptor(String ipAddr, String rackLocation, boolean initializeStorage) { return getDatanodeDescriptor(ipAddr, rackLocation, initializeStorage? new DatanodeStorage(DatanodeStorage.generateUuid()): null); }
DatanodeStorageInfo createProvidedStorage(DatanodeStorage ds) { assert null == storageMap.get(ds.getStorageID()); DatanodeStorageInfo storage = new ProvidedDatanodeStorageInfo(this, ds); storage.setHeartbeatedSinceFailover(true); storageMap.put(storage.getStorageID(), storage); return storage; }