有关于HDFS相关笔记准备| 青训营笔记

90 阅读1分钟

有关于HDFS相关笔记准备| 青训营笔记

这是我参与「第四届青训营 」笔记创作活动的第1天, 一直在阅读其他项目的代码 初步阅读代码

namenode

有的一些模块 nn_module.h

相当于整体都有一个线程池管理,将不同模块放入线程池中。

我们不实现线程的所有操作

因此main.c中先对所有module进行初始化,之后根据不同的client命令触发不同的操作

dfs_module_t dfs_modules[] = 
{
			/**	{
			    string_t  name;
			    int       index;
			    int       flag;
			    void     *data;
			    int       (*master_init)(cycle_t *cycle);
			    int       (*master_release)(cycle_t *cycle);
			    int       (*worker_init)(cycle_t *cycle);
			    int       (*worker_release)(cycle_t *cycle);
				int       (*worker_thread_init)(dfs_thread_t *thread);
			    int       (*worker_thread_release)(dfs_thread_t *thread);
			};
**/
    {// errlog暂时不需要,仅需要console打印一些报错就可以
        string_make("errlog"),
        0,
        PROCESS_MOD_INIT,
        NULL,
        nn_error_log_init,
        nn_error_log_release,
        NULL,
        NULL,
        NULL,
        NULL
    },

    { // 协议一致性相关,暂时不实现
        string_make("paxos"),
        0,
        PROCESS_MOD_INIT,
        NULL,
        NULL,
        NULL,
        nn_paxos_worker_init,
        nn_paxos_worker_release,
        NULL,
        NULL
    },

    { // 实现
        string_make("rpc_server"),
        0,
        PROCESS_MOD_INIT,
        NULL,
        NULL,
        NULL,
        nn_rpc_worker_init,
        nn_rpc_worker_release,
        NULL,
        NULL
    },

    { // 实现
        string_make("file_index"),
        0,
        PROCESS_MOD_INIT,
        NULL,
        NULL,
        NULL,
        nn_file_index_worker_init,
        nn_file_index_worker_release,
        NULL,
        NULL
    },

	{ // 实现
        string_make("dn_index"),
        0,
        PROCESS_MOD_INIT,
        NULL,
        NULL,
        NULL,
        nn_dn_index_worker_init,
        nn_dn_index_worker_release,
        NULL,
        NULL
    },

	{ // 实现
        string_make("blk_index"),
        0,
        PROCESS_MOD_INIT,
        NULL,
        NULL,
        NULL,
        nn_blk_index_worker_init,
        nn_blk_index_worker_release,
        NULL,
        NULL
    },

    {string_null, 0, 0, NULL, NULL, NULL, NULL, NULL, NULL, NULL}
};

datanode

{
    // please miss the beginning;
    {
        string_make("errlog"),
        0,
        PROCESS_MOD_INIT,
        NULL,
        dn_error_log_init,
        dn_error_log_release,
        NULL,
        NULL,
        NULL,
        NULL
    },

	{
        string_make("data_storage"),
        0,
        PROCESS_MOD_INIT,
        NULL,
        dn_data_storage_master_init,
        NULL,
        dn_data_storage_worker_init,
        dn_data_storage_worker_release,
        dn_data_storage_thread_init,
        NULL
    },

// 数据存储的管理

so,

通过需要阅读的代码文件来缩小需要管理的东西准备