Пример #1
0
static int hdfsSingleNameNodeConnect(struct NativeMiniDfsCluster *cl, hdfsFS *fs,
                                     const char *username)
{
    int ret;
    tPort port;
    hdfsFS hdfs;
    struct hdfsBuilder *bld;
    
    port = (tPort)nmdGetNameNodePort(cl);
    if (port < 0) {
        fprintf(stderr, "hdfsSingleNameNodeConnect: nmdGetNameNodePort "
                "returned error %d\n", port);
        return port;
    }
    bld = hdfsNewBuilder();
    if (!bld)
        return -ENOMEM;
    hdfsBuilderSetForceNewInstance(bld);
    hdfsBuilderSetNameNode(bld, "localhost");
    hdfsBuilderSetNameNodePort(bld, port);
    hdfsBuilderConfSetStr(bld, "dfs.block.size",
                          TO_STR(TLH_DEFAULT_BLOCK_SIZE));
    hdfsBuilderConfSetStr(bld, "dfs.blocksize",
                          TO_STR(TLH_DEFAULT_BLOCK_SIZE));
    if (username) {
        hdfsBuilderSetUserName(bld, username);
    }
    hdfs = hdfsBuilderConnect(bld);
    if (!hdfs) {
        ret = -errno;
        return ret;
    }
    *fs = hdfs;
    return 0;
}
Пример #2
0
hdfsFS hdfsConnectAsUser(const char* nn, tPort port, const char *user)
{
    struct hdfsBuilder* bld = hdfsNewBuilder();
    if (!bld) {
        return NULL;
    }
    hdfsBuilderSetNameNode(bld, nn);
    hdfsBuilderSetNameNodePort(bld, port);
    hdfsBuilderSetUserName(bld, user);
    return hdfsBuilderConnect(bld);
}
Пример #3
0
hdfsFS hdfsConnectAsUserNewInstance(const char* host, tPort port,
                                    const char *user)
{
    struct hdfsBuilder *bld = hdfsNewBuilder();
    if (!bld)
        return NULL;
    hdfsBuilderSetNameNode(bld, host);
    hdfsBuilderSetNameNodePort(bld, port);
    hdfsBuilderSetUserName(bld, user);
    hdfsBuilderSetForceNewInstance(bld);
    return hdfsBuilderConnect(bld);
}
Пример #4
0
hdfsFS Hdfs3FindConnection(const std::string& hostport) {
    std::unique_lock<std::mutex> lock(s_hdfs_mutex);

    auto it = s_hdfs_map.find(hostport);
    if (it != s_hdfs_map.end())
        return it->second;

    // split host:port
    std::vector<std::string> splitted = common::Split(hostport, ':', 2);
    uint16_t port;

    if (splitted.size() == 1) {
        port = 8020;
    }
    else {
        if (!common::from_str<uint16_t>(splitted[1], port))
            die("Could not parse port in host:port \"" << hostport << "\"");
    }

    // split user@host
    std::vector<std::string> user_split = common::Split(splitted[0], '@', 2);
    const char* host, * user;

    if (user_split.size() == 1) {
        host = user_split[0].c_str();
        user = nullptr;
    }
    else {
        user = user_split[0].c_str();
        host = user_split[1].c_str();
    }

    hdfsBuilder* builder = hdfsNewBuilder();
    hdfsBuilderSetNameNode(builder, host);
    hdfsBuilderSetNameNodePort(builder, port);
    if (user)
        hdfsBuilderSetUserName(builder, user);

    hdfsFS hdfs = hdfsBuilderConnect(builder);
    if (!hdfs)
        die("Could not connect to HDFS server \"" << hostport << "\""
            ": " << hdfsGetLastError());

    s_hdfs_map[hostport] = hdfs;
    return hdfs;
}