[size=large][b]前期准备[/b][/size]
[size=medium]1.安装包下载[/size]
1)jdk
[url]http://download.oracle.com/otn/java/jdk/7u21-b11/jdk-7u21-linux-x64.rpm][/url]
2) hadoop
[url]http://apache.mirrors.tds.net/hadoop/common/stable/[/url]
[size=medium]2.待部署集群规划[/size]
1)职责划分
确定哪台机器为namenode,哪几台机器为SecondaryNameNode,哪几台机器为datanode
[list]
[*] namenode:负责对HDFS的metadata的持久化存储等功能
[*] SecondaryNameNode:简单的说,用来保存namenode中对HDFS metadata的信息的备份,并减少namenode重启的时间。[color=red]并非namenode的热备进程,只是存储namenode中的部分信息。namenode挂了就算SecondaryNameNode没挂,系统仍无法工作[/color]
[*] datanode:数据存储
[/list]
2)防火墙配置
涉及多个端口,建议初次安装打通各机器间的iptables限制
或配置时规划好各端口做好准备,以免启动后因端口限制导致系统无法运行
3)主机间账号信任关系
出于安全性考虑,最好使用一个没有sudo权限的账号运行hadoop
且必须授权namenode主机上的hadoop账号可以无密码登陆datanode
有关ssh信任关系可以参见[url]http://linux.chinaunix.net/techdoc/net/2007/08/08/964784.shtml[/url]
4)主机名/IP解析
[color=red]如果采用主机名来配置namenode及datanode,请务必修改/etc/hosts文件中<ip,host>映射关系,以避免本机hostname被解析成127.0.0.1(后面章节会讲到,如果这样的话,namenode无法正常监听,client无法正常连接namenode)[/color]
[size=large][b]安装[/b][/size]
[i][b][size=medium][color=blue]namenode节点上配置环境,然后拷贝安装包到其他datanode即可[/color][/size][/b][/i]
[size=medium]1.安装jdk[/size]
[size=medium]2.解压hadoop-xxx.tar.gz到/data/hadoop/目录[/size]
[size=medium]3.创建tmp目录[/size]
[size=medium]4.配置环境变量[/size]
[size=medium]5.集群配置[/size]
[size=medium]5.1 conf/core-site.xml[/size]
[list]
[*] fs.default.name是NameNode的URI。hdfs://主机名:端口/
[*] hadoop.tmp.dir
Hadoop的默认临时路径,这个最好配置,如果在新增节点或者其他情况下莫名其妙的DataNode启动不了,就删除此文件中的tmp目录即可。不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令。
[/list]
[size=medium]5.2 conf/mapred-site.xml[/size]
[size=medium]5.3 conf/hdfs-site.xml[/size]
[list]
[*] dfs.name.dir是NameNode持久存储名字空间及事务日志的本地文件系统路径。 当这个值是一个逗号分割的目录列表时,nametable数据将会被复制到所有目录中做冗余备份。
[*] dfs.data.dir是DataNode存放块数据的本地文件系统路径,逗号分割的列表。 当这个值是逗号分割的目录列表时,数据将被存储在所有目录下,通常分布在不同设备上。
[*] dfs.replication是数据需要备份的数量,默认是3,如果此数大于集群的机器数会出错。
[/list]
[i][b][size=medium][color=blue]注意:此处的目录/data/hadoop/hadoop-1.1.2/data,/data/hadoop/hadoop-1.1.2/name不能预先创建,hadoop格式化时会自动创建,如果预先创建反而会有问题。
[/color][/size][/b][/i]
[size=medium]5.4 配置masters及slavers[/size]
配置conf/masters和conf/slaves来设置主从结点,注意最好使用主机名,并且保证机器之间通过主机名可以互相访问,每个主机名一行。
[size=medium]5.5 配置环境变量(/etc/profile)[/size]
[color="red"]
不要配置环境变量HADOOP_HOME,不然访问hadoop时老是抛Warning: $HADOOP_HOME is deprecated.
[/color]
配置结束,把配置好的hadoop文件夹拷贝到其他集群的机器中,并且保证上面的配置对于其他机器而言正确,例如:如果其他机器的Java安装路径不一样,要修改conf/hadoop-env.sh
[b][size=large]启动[/size][/b]
[size=medium]1. 格式化namenode[/size]
[size=medium]2. 启动所有节点[/size]
或
[size=large][b]测试[/b][/size]
[size=medium]1.jps检查[/size]
[size=medium]2.netstat查看端口LISTEN状态[/size]
查看9000(默认namenode)及9001(默认jobtracker)的监听状态
[size=medium]3.dfsadmin [/size]
[size=medium]4.存储文件[/size]
可能遇到的问题(待续)
参考:
http://blog.csdn.net/hguisu/article/details/7237395
[size=medium]1.安装包下载[/size]
1)jdk
[url]http://download.oracle.com/otn/java/jdk/7u21-b11/jdk-7u21-linux-x64.rpm][/url]
2) hadoop
[url]http://apache.mirrors.tds.net/hadoop/common/stable/[/url]
[size=medium]2.待部署集群规划[/size]
1)职责划分
确定哪台机器为namenode,哪几台机器为SecondaryNameNode,哪几台机器为datanode
[list]
[*] namenode:负责对HDFS的metadata的持久化存储等功能
[*] SecondaryNameNode:简单的说,用来保存namenode中对HDFS metadata的信息的备份,并减少namenode重启的时间。[color=red]并非namenode的热备进程,只是存储namenode中的部分信息。namenode挂了就算SecondaryNameNode没挂,系统仍无法工作[/color]
[*] datanode:数据存储
[/list]
2)防火墙配置
涉及多个端口,建议初次安装打通各机器间的iptables限制
或配置时规划好各端口做好准备,以免启动后因端口限制导致系统无法运行
3)主机间账号信任关系
出于安全性考虑,最好使用一个没有sudo权限的账号运行hadoop
#useradd hadoop
#passwd hadoop
且必须授权namenode主机上的hadoop账号可以无密码登陆datanode
有关ssh信任关系可以参见[url]http://linux.chinaunix.net/techdoc/net/2007/08/08/964784.shtml[/url]
4)主机名/IP解析
[color=red]如果采用主机名来配置namenode及datanode,请务必修改/etc/hosts文件中<ip,host>映射关系,以避免本机hostname被解析成127.0.0.1(后面章节会讲到,如果这样的话,namenode无法正常监听,client无法正常连接namenode)[/color]
[size=large][b]安装[/b][/size]
[i][b][size=medium][color=blue]namenode节点上配置环境,然后拷贝安装包到其他datanode即可[/color][/size][/b][/i]
[size=medium]1.安装jdk[/size]
sudo rpm -ivh jdk-7u21-linux-x64.rpm
[size=medium]2.解压hadoop-xxx.tar.gz到/data/hadoop/目录[/size]
mv ~/hadoop-1.1.2.tar.gz /data/hadoop;
cd /data/hadoop;
tar -xzvf hadoop-1.1.2.tar.gz
[size=medium]3.创建tmp目录[/size]
mkdir /data/hadoop/hadoop-1.1.2/tmp
[size=medium]4.配置环境变量[/size]
vim conf/hadoop-env.sh #增加export JAVA_HOME="/usr/java/jdk1.7.0_21"
[size=medium]5.集群配置[/size]
[size=medium]5.1 conf/core-site.xml[/size]
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://namenode.godlovesdog.com:9000/</value>
//namenode的hostname
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/data/hadoop/hadoop-1.1.2/tmp</value>
</property>
<property>
<name>dfs.datanode.socket.write.timeout</name>
<value>3000000</value>
</property>
<property>
<name>dfs.socket.timeout</name>
<value>3000000</value>
</property>
</configuration>
[list]
[*] fs.default.name是NameNode的URI。hdfs://主机名:端口/
[*] hadoop.tmp.dir
Hadoop的默认临时路径,这个最好配置,如果在新增节点或者其他情况下莫名其妙的DataNode启动不了,就删除此文件中的tmp目录即可。不过如果删除了NameNode机器的此目录,那么就需要重新执行NameNode格式化的命令。
[/list]
[size=medium]5.2 conf/mapred-site.xml[/size]
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>http://namenode.godlovesdog.com:9001</value>
</property>
<property>
<name>mapred.child.java.opts</name>
<value>-Xmx2048m</value> //可选的配置,后续会讲到这一配置的含义
</property>
</configuration>
[size=medium]5.3 conf/hdfs-site.xml[/size]
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/data/hadoop/hadoop-1.1.2/name</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/data/hadoop/hadoop-1.1.2/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>4096</value>
</property>
<property>
<name>dfs.namenode.handler.count</name>
<value>1000</value>
</property>
<property>
<name>dfs.datanode.handler.count</name>
<value>1000</value>
</property>
<property>
<name>dfs.client.block.write.retries</name>
<value>10</value>
</property>
<property>
<name>dfs.datanode.max.xcievers</name>
<value>2560000</value>
</property>
</configuration>
[list]
[*] dfs.name.dir是NameNode持久存储名字空间及事务日志的本地文件系统路径。 当这个值是一个逗号分割的目录列表时,nametable数据将会被复制到所有目录中做冗余备份。
[*] dfs.data.dir是DataNode存放块数据的本地文件系统路径,逗号分割的列表。 当这个值是逗号分割的目录列表时,数据将被存储在所有目录下,通常分布在不同设备上。
[*] dfs.replication是数据需要备份的数量,默认是3,如果此数大于集群的机器数会出错。
[/list]
[i][b][size=medium][color=blue]注意:此处的目录/data/hadoop/hadoop-1.1.2/data,/data/hadoop/hadoop-1.1.2/name不能预先创建,hadoop格式化时会自动创建,如果预先创建反而会有问题。
[/color][/size][/b][/i]
[size=medium]5.4 配置masters及slavers[/size]
配置conf/masters和conf/slaves来设置主从结点,注意最好使用主机名,并且保证机器之间通过主机名可以互相访问,每个主机名一行。
vi masters: #配置SecondaryNameNode
输入:
node1
vi slaves:
输入:
node2
node3
[size=medium]5.5 配置环境变量(/etc/profile)[/size]
export JAVA_HOME=/usr/java/jdk1.7.0_21
export CLASSPATH=.:$JAVA_HOME/lib
export PATH=$PATH:/usr/local/php-5.3/bin:/usr/local/php-5.3/sbin:$JAVA_HOME/bin:/data/hadoop/hadoop-1.1.2/bin
[color="red"]
不要配置环境变量HADOOP_HOME,不然访问hadoop时老是抛Warning: $HADOOP_HOME is deprecated.
[/color]
配置结束,把配置好的hadoop文件夹拷贝到其他集群的机器中,并且保证上面的配置对于其他机器而言正确,例如:如果其他机器的Java安装路径不一样,要修改conf/hadoop-env.sh
[b][size=large]启动[/size][/b]
[size=medium]1. 格式化namenode[/size]
hadoop namenode -format
[size=medium]2. 启动所有节点[/size]
start-all.sh (同时启动hdfs及Map/Reduce)
或
start-dfs.sh(单独启动HDFS集群)
start-mapred.sh (单独启动Map/Reduce)
[size=large][b]测试[/b][/size]
[size=medium]1.jps检查[/size]
:/data/hadoop/hadoop-1.1.2 $ jps
5829 Jps
11608 NameNode
13142 JobTracker
14340 TaskTracker
11815 DataNode
11998 SecondaryNameNode
[size=medium]2.netstat查看端口LISTEN状态[/size]
查看9000(默认namenode)及9001(默认jobtracker)的监听状态
[size=medium]3.dfsadmin [/size]
hadoop dfsadmin -report
[size=medium]4.存储文件[/size]
hadoop fs -put ~/a.txt /
可能遇到的问题(待续)
参考:
http://blog.csdn.net/hguisu/article/details/7237395