有关于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,
通过需要阅读的代码文件来缩小需要管理的东西准备