HDFS 采用了主从(Master/Slave)结构模型,一个HDFS 集群是由一个NameNode 和若干个DataNode 组成的。其中NameNode 作为主服务器,
管理文件系统的命名空间和客户端对文件的访问操作;集群中的DataNode 管理存储的数据。
sudo apt-get install sun-java6-jdk
这里先解释一下sudo 与apt 这两个命令,sudo 这个命令允许普通用户执行某些或全部
需要root 权限命令,它提供了详尽的日志,可以记录下每个用户使用这个命令做了些什么操
作;同时sudo 也提供了灵活的管理方式,可以限制用户使用命令。sudo 的配置文件为/etc/
sudoers。
apt 的全称为the Advanced Packaging Tool,是Debian 计划的一部分,是Ubuntu 的软件
包管理软件,通过apt 安装软件无须考虑软件的依赖关系,可以直接安装所需要的软件,apt
会自动下载有依赖关系的包,并按顺序安装,在Ubuntu 中安装有apt 的一个图形化界面程序
synaptic(中文译名为“新立得”),
sudo apt-get install ssh
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
解释一下,ssh-keygen 代表生成密钥;-t(注意区分大小写)表示指定生成的密钥类型;
dsa 是dsa 密钥认证的意思,即密钥类型;-P 用于提供密语;-f 指定生成的密钥文件
cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
这段话的意思是把公钥加到用于认证的公钥文件中,这里的authorized_keys 是用于认证
的公钥文件。
Hadoop 分别从三个角度将主机划分为两种角色。第一,划分为master 和slave,即主人
与奴隶;第二,从HDFS 的角度,将主机划分为NameNode 和DataNode(在分布式文件系
统中,目录的管理很重要,管理目录的就相当于主人,而NameNode 就是目录管理者);第
三,从MapReduce 的角度,将主机划分为JobTracker 和TaskTracker(一个job 经常被划分
为多个task,从这个角度不难理解它们之间的关系)。
格式化Hadoop 的文件系统HDFS
bin/Hadoop NameNode -format
Hadoop 的配置文件分为两类:
只读类型的默认文件:src/core/core-default.xml、src/hdfs/hdfs-default.xml、src/
mapred/mapred-default.xml、conf/mapred-queues.xml
定位(site-specific)设置:conf/core-site.xml、conf/hdfs-site.xml、conf/mapred-site.xml、
conf/mapred-queues.xml。
Hadoop 允许定义最终参数(final parameters),如果任意资源声明了final 这个值,那
么之后加载的任何资源都不能改变这个值,定义最终资源的格式是这样的:
<property>
<name>dfs.client.buffer.dir</name>
<value>/tmp/Hadoop/dfs/client</value>
<final>true</final> // 注意这个值
</property>
Hadoop 允许参数传递,如下所示,当tempdir 被调用时,basedir 会作为值被调用
<property>
<name>basedir</name>
<value>/user/${user.name}</value>
</property>
<property>
<name>tempdir</name>
<value>${basedir}/tmp</value>
</property>
conf/core-site.xml 的配置
fs.default.name NameNode 的IP 地址及端口
conf/hdfs-site.xml 的配置
dfs.name.dir NameNode 存储名字空间及汇报日志的位置
dfs.data.dir DataNode 存储数据块的位置
conf/mapred-site.xml 的配置
mapreduce.jobtracker.address JobTracker 的IP 地址及端口
mapreduce.jobtracker.system.dir MapReduce 在HDFS 上存储文件的位置, 例如/Hadoop/mapred/system/
mapreduce.cluster.local.dir MapReduce 的缓存数据存储在文件系统上的位置
mapred.tasktracker.{map|reduce}.tasks.maximum 每台TaskTracker 所能运行的Map 或Reduce 的task 最大数量
dfs.hosts/dfs.hosts.exclude 允许或禁止的DataNode 列表
mapreduce.jobtracker.hosts.filename/
mapreduce.jobtracker.hosts.exclude.filename 允许或禁止的TaskTrackers 列表
mapreduce.cluster.job-authorization-enabled 布尔类型,标志着job 存取控制列表是否支持对job 的观察和修改
重启坏掉的DataNode 或JobTracker。
bin/Hadoop-daemon.sh start DataNode
bin/Hadoop-daemon.sh start jobtracker
动态加入DataNode 或TaskTracker。这个命令允许用户动态将某个节点加入集群中。
bin/Hadoop-daemon.sh --config ./conf start DataNode
bin/Hadoop-daemon.sh --config ./conf start tasktracker