NameNode 主要存放文件映射和文件更改日志
SecondaryNameNode 一个守护进程 定时从NameNode同步文件更改日志并合并成一条日志,方便hadoop每次重启时 找到上次宕机的还原点。在后续的版本中会被backupNameNode和nameNode集群取代。
Jobtracker 任务调度守护进程
Tasktracker 任务执行进程
DataName 数据存储节点,往往和Tasktracker部署在同一台机器上。
GNU/Linux ,hadoop不建议在win32平台上使用,顾这里只介绍在linux系统上的 安装和配置
JavaTM1.5.x及以上的版本,必须安装,建议选择Sun公司发行的Java版本。
ssh 必须安装并且保证 sshd一直运行,以便用Hadoop 脚本管理远端Hadoop守护进程。
本文使用的是 hadoop-0.20.203.0,笔者当前的稳定版本。
下载地址 http://hadoop.apache.org/common/releases.html#Download
本文 使用的是 4台 linux机器,hadoop.master 作为namenode节点,hadoop.second作为secondaryNameNode节点,hadoop.slave1 作为第一datanode节点,hadoop.slave2作为第二个datanode节点。
Ø 编辑环境变量
建议直接编辑 /etc/profile文件 增加 JAVA_HOME和HADOOP_HOME环境变量,具体事例如下所示:
[root@hadoop ~]# vi /etc/profile
增加如下几行代码
export JAVA_OPTS='-Xms256m -Xmx512m'
export JAVA_HOME=/usr/local/java
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export JRE_HOME=/usr/local/java/jre
export PATH=$JAVA_HOME/bin:$PATH
export HADOOP_HOME=/usr/local/hadoop
export PATH=$PATH:$HADOOP_HOME/bin
笔者为了以后方便起停hadoop 把hadoop的bin也目录加到path中。
: wq
让环境变量即时生效
[root@hadoop ~]# source /etc/profile
Ø 修改 hosts文件
[root@hadoop ~]# vi /etc/hosts
在打开的文件中添加如下配置
192.168.2.17 hadoop.master
192.168.2.19 hadoop.slave1
192.168.2.14 hadoop.slave2
192.168.1.197 hadoop.second
增加如上几个域名,具体ip地址由各自的实际情况定,这里只列出笔者实验环境所需的。 Hadoop集群环境中 使用域名访问的,所以需要把slave,master等域名加到每台服务器上。
Ø 建立hadoop专属用户
Groupadd hadoop
Useradd hadoop –g hadoop
Passwd hadoop
Changing password for user hadoop.
New UNIX password:
123456
Retype new UNIX password:
123456
Ø 安装软件
安装JDK到/usr/local下命名为java
将下载好的hadoop-0.20.3.tar.gz文件上传到master的/usr/local/hadoop
tar zxvf hadoop-0.20.3.tar.gz #解压文件
设置hadoop目录的访问权限
chown –R hadoop:hadoop /usr/local/hadoop
Ø 改机器名
把每台机器的 机器名改成localhost。
Vi /etc/sysconfig/network
修改HOSTNAME = localhost
此处是没搞清楚为什么的地方,实验结果表明 必须改成localhost hadoop才能正常启动。具体原理 目前还没有搞清楚,只知其然,其所以然有待于以后研究。
7.2 每个节点不同的配置
7.2.1 配置hadoop
Hadoop的配置文件 在早期版本中都放在同一个文件里 hadoop-site.xml,在新版本中hadoop把配置文件做了区分,分成了:
Core-site.xml 配置Common组件的属性
Hadoop-site.xml 配置HDFS组件的属性
Mapred-site.xml 配置map-reduce组件的属性
除了这3个配置文件以外 还有 hadoop-env.xml 用来设置 hadoop用到的环境变量;masters文件用来配置 SNN 节点地址 注意必须配置域名;slaves文件 配置所有DN节点的地址,必须是域名
7.2.2 Core-site.xml 配置实例
DN节点 以及 NN节点,snn节点配置一至:
<property>
<name>fs.default.name</name> // 配置NN节点地址和端口号
<value>hdfs://hadoop.master:9000</value> //注意格式必须是 host:port的形式
</property>
<property>
<name>hadoop.tmp.dir</name> //hadoop临时目录用来存放nn临时文件
<value>/usr/local/hadoop/tmp</value> //该目录必须预先手工创建不能删除
</property>
<property>
<name>fs.checkpoint.period</name> //snn检查nn日志的时间周期
<value>60</value> //单位是秒,正式环境上建议配置成12小时
</property>
<property>
<name>fs.checkpoint.size</name> //snn每次从nn上读取的数据大小
<value>67108864</value> //通常情况下默认值就可以
</property>
7.2.3 Hdfs-site.xml
Ø NN 节点
<property>
<name>dfs.name.dir</name> // 指定name 镜像文件存放目录,如不指定则
<value>/usr/local/hadoop/hdfs/name</value> //默认为core-site中配置的tmp目录
</property>
<property>
<name>dfs.replication</name> //数据节点冗余备份的数量,由于实验只有2个
<value>1</value> // NN 顾设置唯一,实际配置是可由实际情况
</property> //配置,建议尽量大于3
<property>
<name>dfs.permissions</name> //是否需要角色权限验证,上传文件时会用到,
<value>false</value> //如果为true ,需要绑定hadoop用户角色
</property>
<property>
<name>dfs.secondary.http.address</name> //SNN 的web访问地址。
<value>hadoop.second:50090</value>
</property>
Ø DN节点配置
<property>
<name>dfs.data.dir</name> // 数据存放的目录,如果不写 默认为
<value>/usr/local/hadoop/hdfs/data</value> // core-site中配置的tmp目录
</property>
<property>
<name>dfs.replication</name> //数据节点冗余备份的数量,由于实验只有2个
<value>1</value> // NN 顾设置唯一,实际配置是可由实际情况
</property> //配置,建议尽量大于3
<property>
<name>dfs.permissions</name> //是否需要角色权限验证,上传文件时会用到
<value>false</value> //如果为true ,需要绑定hadoop用户角色
</property>
<property>
<name>dfs.secondary.http.address</name> //SNN 的web访问地址
<value>hadoop.second:50090</value>
</property>
Ø SN节点的配置
<property>
<name>dfs.name.dir</name> // 指定name 镜像文件存放目录,如不指定则
<value>/usr/local/hadoop/hdfs/name</value> //默认为core-site中配置的tmp目录
</property>
<property>
<name>dfs.replication</name> //数据节点冗余备份的数量,由于实验只有2个
<value>1</value> // NN 顾设置唯一,实际配置是可由实际情况
</property> //配置,建议尽量大于3
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.http.address</name> NN 的web访问地址,注意此处和其他节点不同
<value>hadoop.master:50070</value>
</property>
Ø Mapred-site.xml配置
所有节点都一致
<property>
<name>mapred.job.tracker</name>
<value>hadoop.master:9001</value> //必须为host:port的形式,不能直接写ip
</property>
Jobtracker的分布式的配置方法目前没设置成功,有待于继续研究
Ø Masters文件配置和slaves文件配置 所有节点全部一致
所有节点的masters 里面均配置 SNN的域名
所有节点的slaves 里面均配置所有DN的域名,一行一个DN
Ø Hadoop-env.sh 文件配置
里面是hadoop运行时定义的环境变量
其他的都可以用默认值,但是有一项必须修改 就是javahome环境变量,指定到实际的javahome目录。实例:
export JAVA_HOME=/usr/local/java
1. hadoop无用户登录配置
用 hadoop用户进入每台机器:
进入 /home/hadoop 目录
ssh-keygen -t rsa #建立ssh目录,敲回车到底
1) 登录NN服务器
2) 进入/home/hadoop/.ssh目录
3) scp -r id_rsa.pub hadoop@hadoop.slave1:/home/hadoop/.ssh/authorized_keys
#将master上的密钥传到slave1的hadoop用户下,重命名为authorized_keys
4) scp -r id_rsa.pub hadoop@hdoop.slave2:/home/hadoop/.ssh/authorized_keys
#将master上的密钥传到slave2的hadoop用户下,重命名为authorized_keys
5) scp -r id_rsa.pub hadoop@hadoop.second:/home/hadoop/.ssh/authorized_keys
#将master上的密钥传到snn的hadoop用户下,重命名为authorized_keys
6) 用hadoop用户进入hadoop.slave1 /home/hadoop/.ssh目录
7) cat id_rsa.pub >> authorized_keys
#把自己的id_rsa.pub内容也放到authorized_keys中
8) scp -r id_rsa.pub hadoop@hadoop.master:/home/hadoop/.ssh/authorized_keys_s1
#将slave1上的密钥传到master的hadoop用户下
9) 用hadoop用户进入hadoop.slave2 /home/hadoop/.ssh目录
10) cat id_rsa.pub >> authorized_keys
#把自己的id_rsa.pub内容也放到authorized_keys中
11) scp -r id_rsa.pub hadoop@hadoop.master:/home/hadoop/.ssh/authorized_keys_s2
#将slave2上的密钥传到master的hadoop用户下
12) 用hadoop用户进入hadoop.second /home/hadoop/.ssh目录
13) cat id_rsa.pub >> authorized_keys
#把自己的id_rsa.pub内容也放到authorized_keys中
14) scp -r id_rsa.pub hadoop@hadoop.master:/home/hadoop/.ssh/authorized_keys_second
#将snn上的密钥传到master的hadoop用户下
15) 在master,上执行以下操作
16) cat id_rsa.pub >> authorized_keys
#将本地密钥添加authorized_keys
17) cat authorized_keys_s1 >> authorized_keys
18) cat authorized_keys_s2 >> authorized_keys
19) cat authorized_keys_second >> authorized_keys
20) rm authorized_keys_second
21) rm authorized_keys_s1
22) rm authorized_keys_s2
这样主节点和从节点之间就可以不用密码直接ssh访问
特别注意 authorized_keys 文件的访问权限 必须设置成600
登录每台机器 执行 chmod 600 authorized_keys
2. 启动hadoop
用hadoop用户进入nn服务器的 /usr/local/hadoop/hadoop-0.20.203.0/bin目录
Ø 格式化hadoop
Hadoop namenode –format
Ø 启动hadoop
./start-all.ssh ,不建议这样启动 建议单独启动守护进程。
Ø Hadoop日志目录
/usr/local/hadoop/hadoop-0.20.203.0/logs
启动完检查下启动日志,启动后 到nn上查看
hadoop-hadoop-namenode-master.log
hadoop-hadoop-jobtracker-master.log
因为 我们的 nn和 jobtracker 部署在同一台机器上,所有master上会有2个日志
登录snn节点服务器 查看
hadoop-hadoop-secondarynamenode-master.log
这几个没错误就OK了
这时候就可以进入管理页面看看了
posted on 2011-12-08 13:14
邓兵野 阅读(3497)
评论(2) 编辑 收藏