/*** * Creates a node group that is associated with a new dataset. * * @param dataverseName, * the dataverse name of the dataset. * @param datasetName, * the name of the dataset. * @param ncNames, * the set of node names. * @param metadataProvider, * the metadata provider. * @return the name of the created node group. * @throws Exception */ public static String createNodeGroupForNewDataset(String dataverseName, String datasetName, Set<String> ncNames, MetadataProvider metadataProvider) throws Exception { return createNodeGroupForNewDataset(dataverseName, datasetName, 0L, ncNames, metadataProvider); }
protected static String configureNodegroupForDataset(ICcApplicationContext appCtx, Map<String, String> hints, String dataverseName, String datasetName, MetadataProvider metadataProvider, SourceLocation sourceLoc) throws Exception { IClusterStateManager csm = appCtx.getClusterStateManager(); Set<String> allNodes = csm.getParticipantNodes(true); Set<String> selectedNodes = new LinkedHashSet<>(); String hintValue = hints.get(DatasetNodegroupCardinalityHint.NAME); if (hintValue == null) { selectedNodes.addAll(allNodes); } else { int nodegroupCardinality; final Pair<Boolean, String> validation = DatasetHints.validate(appCtx, DatasetNodegroupCardinalityHint.NAME, hints.get(DatasetNodegroupCardinalityHint.NAME)); boolean valid = validation.first; if (!valid) { throw new CompilationException(ErrorCode.COMPILATION_ERROR, sourceLoc, "Incorrect use of hint '" + DatasetNodegroupCardinalityHint.NAME + "': " + validation.second); } else { nodegroupCardinality = Integer.parseInt(hints.get(DatasetNodegroupCardinalityHint.NAME)); } List<String> allNodeList = new ArrayList<>(allNodes); Collections.shuffle(allNodeList); selectedNodes.addAll(allNodeList.subList(0, nodegroupCardinality)); } // Creates the associated node group for the dataset. return DatasetUtil.createNodeGroupForNewDataset(dataverseName, datasetName, selectedNodes, metadataProvider); }
String nodeGroupName = DatasetUtil.createNodeGroupForNewDataset(sourceDataset.getDataverseName(), sourceDataset.getDatasetName(), sourceDataset.getRebalanceCount() + 1, targetNcNames, metadataProvider);
try { final Set<String> rebalanceToNodes = Stream.of("asterix_nc1").collect(Collectors.toSet()); DatasetUtil.createNodeGroupForNewDataset(sourceDataset.getDataverseName(), sourceDataset.getDatasetName(), sourceDataset.getRebalanceCount() + 1, rebalanceToNodes, metadataProvider);