Hadoop Enviroment
假设计算环境中有两台机器,一台机器为Namenode(主机名:bccdb-1,Ip:9.186.102.138),一台机器为Datanode(主机名:bccdb-2,Ip:9.186.52.159)
1. 配置IP与主机名的对应关系
编辑两台机器的/etc/hosts文件为
127.0.0.0 localhost localhost
9.186.102.138 bccdb-1 bccdb-1
9.186.52.159 bccdb-2 bccdb-2
设置完成后,在bccdb-1机器上ping bccdb-2,确保可以通过,然后在bccdb-2机器上ping bccdb-1,确保可以通过。
2. 添加用户bccdb
在两台机器上运行useradd bccdb, 然后运行usermod -U bccdb, 建立bccdb这个帐户,帐户的更目录默认为/home/bccdb
3. 准备Hadoop目录结构
建立目录/home/bccdb/HadoopInstall, 拷贝hadoop-0.19.0.tar.gz到/home/bccdb/HadoopInstall下,解压缩hadoop-0.19.0.tar.gz形成目录/home/bccdb/HadoopInstall/hadoop-0.19.0,用ln -s hadoop-0.19.0 hadoop建立软链接。建立目录/home/bccdb/HadoopInstall/hadoop-config,拷贝/home/bccdb/HadoopInstall/hadoop/conf/下的hadoop_site.xml,slaves,hadoop_env.sh,masters四个文件到/home/bccdb/HadoopInstall/hadoop-config下。
4. 配置SSH
在bccdb-1机器上运行ssh-keygen -t rsa (交互时直接回车设置为空密码)。到/home/bccdb/.ssh目录下运行cp id_rsa.pub authorized_keys,生成authorized_keys,chmod 600 authorized_keys.
登陆到bccdb-2机器,建立目录/home/bccdb/.ssh。然后拷贝bccdb-1机器上的authorized_keys文件到/home/bccdb/.ssh目录下,用命令scp bccdb-1:/home/bccdb/.ssh/authorized_keys /home/bccdb/.ssh/
scp bccdb-1:/home/bccdb/.ssh/id_rsa /home/bccdb/.ssh/
scp bccdb-1:/home/bccdb/.ssh/id_rsa.pub /home/bccdb/.ssh/
进入/home/bccdb/.ssh目录,然后chmod 600 authorized_keys, 重要:执行chmod 700 .和chmod 700 ..命令。用ls -la查看时权限必须为
drwx------ 2 bccdb bccdb 4096 12月 24 13:42 .
drwx------ 5 bccdb bccdb 4096 12月 24 13:56 ..
-rw------- 1 bccdb bccdb 223 12月 24 11:41 authorized_keys
注意,每个机器上的都应该是这样的。
编辑每个机器上的/etc/ssh/sshd_config文件
vi /etc/ssh/sshd_config
编辑使以下两行有效
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
然后重新启动sshd服务/etc/rc.d/init.d/sshd restart
现在我们可以检查ssh是否配置正确:在bccdb-1机器上执行ssh bccdb-1,如果不需要密码直接登陆,则bccdb-1配置正确,然后执行ssh bccdb-2,如果不需要密码直接登陆,则bccdb-2也配置正确。
5. 设置环境变量
在每台机器上都编辑vi ~/.bashrc文件,加入(注意请更改自己的jdk路径,请用jdk1.6以上版本)
export HADOOP_CONF_DIR=/home/bccdb/HadoopInstall/hadoop-config
export HADOOP_HOME=/home/bccdb/HadoopInstall/hadoop
export JAVA_HOME=/usr/java/jdk1.6.0_01
export PATH=$JAVA_HOME/bin:$PATH
6. 配置Hadoop
编辑/home/bccdb/HadoopInstall/hadoop-config/slaves, 删除localhost,添加bccdb-2。表示bccdb-2是一台slave node.
编辑/home/bccdb/HadoopInstall/hadoop-config/hadoop-site.xml为
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>fs.default.name</name>
<value>hdfs://bccdb-1:9000</value>
<description>The name of the default file system. Either the literal string "local" or a host:port for
DFS.</description>
</property>
<property>
<name>mapred.job.tracker</name>
<value>bccdb-1:9001</value>
<description>The host and port that the MapReduce job tracker runs at. If "local", then jobs are run
in-process as a single map and reduce task.</description>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/bccdb/HadoopInstall/tmp</value>
<description>A base for other temporary directories.</description>
</property>
<property>
<name>dfs.name.dir</name>
<value>/home/bccdb/HadoopInstall/filesystem/name</value>
<description>Determines where on the local filesystem the DFS name node should store the name table.
If this is a comma-delimited list of directories then the name table is replicated in all of the
directories, for redundancy. </description>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/bccdb/HadoopInstall/filesystem/data</value>
<description>Determines where on the local filesystem an DFS data node should store its blocks. If
this is a comma-delimited list of directories, then data will be stored in all named directories,
typically on different devices. Directories that do not exist are ignored.</description>
</property>
<property>
<name>dfs.replication</name>
<value>1</value>
<description>Default block replication. The actual number of replications can be specified when the
file is created. The default is used if replication is not specified in create time.</description>
</property>
</configuration>
7. 部署Hadoop到其他机器上
scp -r /home/bccdb/HadoopInstall bccdb-2:/home/bccdb/
至此,部署完毕。
测试:
1. 启动Hadoop
启动之前,我们先要格式化namenode,先进入~/HadoopInstall/hadoop目录,执行下面的命令
bin/hadoop namenode -format
不出意外,应该会提示格式化成功。如果不成功,就去hadoop/logs/目录下去查看日志文件下面就该正式启动hadoop啦,在bin/下面有很多启动脚本,可以根据自己的需要来启动。
bin/start-all.sh 启动所有进程
bin/stop-all.sh 停止所有进程
2. 建立目录
bin/hadoop dfs -mkdir testdir
3. 复制文件
bin/hadoop dfs -put /home/dbrg/large.zip testfile.zip
4. 查看现有文件
bin/hadoop dfs -ls
本文很多内容参照http://tech.ddvip.com/2008-09/122172785667255.html配置。