Hadoop安装部署

 

http://www.kuqin.com/system-analysis/20081023/24034.html

1. Hadoop安装部署

1.1. 机器说明
总共4台机器:test161.sqa,test162.sqa, test163.sqa,test164.sqa
IP地址分别为:192.168.207.161 …… 192.168.207.164
操作系统:Redhat Linux
root用户密码:hello123

test161.sqa(192.168.207.161)作为namenode(master),其他的作为datanode(slave)

1.2. 用机器名ping通机器
用root用户登录。
在namenode和各个slave上用机器名互相ping,ping不通的话,修改/etc/hosts文件,加入如下内容:
192.168.207.161 test161.sqa
192.168.207.162 test162.sqa
192.168.207.163 test163.sqa
192.168.207.164 test164.sqa
这样应该就可以用机器名ping通了。
其他datanode机器只要保证和namenode能ping通就可以了

1.3. 新建系统hadoop用户
Hadoop要求所有机器上hadoop的部署目录结构要相同,并且都有一个相同的用户名的帐户,所以需要每台机器见一个同名的用户。
在这4台机器上建hadoop用户,密码:hadoop,默认路径/home/hadoop/。

1.4. SSH设置
Hadoop需要namenode到datanode的无密码SSH,所以需要设置namenode到其他3台datanode的无密码公钥认证方式的SSH。
首先用hadoop用户登录每台机器(包括namenode),在/home/hadoop/目录下建立.ssh目录,并将目录权设为:drwxr-xr-x,设置命令:
chmod 755 .ssh
在namenode执行入下图命令(用新建的hadoop用户登录):

输入ssh-keygen -t rsa后,
Enter file in which to save the key (/home/hadoop/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): Enter same passphrase again:
这三个项目都直接回车。
然后将id_rsa.pub的内容复制到每个机器(也包括本机)的/home/hadoop/.ssh/authorized_keys文件中,
如果机器上已经有authorized_keys这个文件了,就在文件末尾加上id_rsa.pub中的内容,
如果没有authorized_keys这个文件,直接cp或者scp就好了,
下面的操作假设各个机器上都没有authorized_keys文件。
具体命令:
在namenode执行(用新建的hadoop用户登录):
cp /home/hadoop/.ssh/id_rsa.pub /home/hadoop/.ssh/authorized_keys scp authorized_keys test162.sqa:/home/hadoop/.ssh/
此处的scp就是通过ssh进行远程copy,此处需要输入远程主机的密码,即test162.sqa机器上hadoop帐户的密码(hadoop),
当然,也可以用其他方法将authorized_keys文件拷贝到其他机器上。另外2台datanode也一样拷贝。
scp authorized_keys test163.sqa:/home/hadoop/.ssh/scp authorized_keys test164.sqa:/home/hadoop/.ssh/
用hadoop用户登录每台机器,修改/home/hadoop/.ssh/authorized_keys文件的权限为:-rw-r–r–,设置命令:
cd /home/hadoop/.sshchmod 644 authorized_keys
设置完成后,测试一下namenode到各个节点的ssh链接,包括到本机,如果不需要输入密码就可以ssh登录,说明设置成功了。
其他机器一样测试:
ssh test162.sqassh test163.sqassh test164.sqa

1.5. 安装JDK
到sun网站下载JDK安装包,并在每台机器的root用户下面安装。下面以实例简单描述一下如何安装:
下载JDK的rpm包jdk-6u6-linux-i586-rpm.bin
chmod u+x ./jdk-6u6-linux-i586-rpm.bin./ jdk-6u6-linux-i586-rpm.bin rpm -ivh jdk-6u6-linux-i586.rpm
安装软件会将JDK自动安装到 /usr/java/jdk1.6.0_07目录下。安装完成后,设置JDK的环境变量,
考虑到JDK可能会有其他系统用户也会用到,建议将环境变量直接设置在/etc/profile中具体内容:
export JAVA_HOME=/usr/java/jdk1.6.0_07
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin

1.6. 设置目录并安装Hadoop
用hadoop用户登录namenode,并新建一个目录,用于存放所有hadoop相关内容。
本例中在/home/hadoop目录下新建HadoopInstall下载hadoop安装包
http://apache.mirror.phpchina.com/hadoop/core/hadoop-0.16.3/hadoop-0.16.3.tar.gz,
存放到namenode的hadoop用户的/home/hadoop/HadoopInstall并解压缩:
tar zxvf hadoop-0.16.3.tar.gz
考虑到今后升级以及其他操作的方便性,建议建一个名称为hadoop的链接,指向hadoop-0.16.3目录:
ln -s hadoop-0.16.3 hadoop
新建目录:/home/hadoop/HadoopInstall/hadoop-conf
将/home/hadoop/HadoopInstall/hadoop/conf目录下的hadoop_site.xml,slaves,hadoop_env.sh,
masters文件拷贝到/home/hadoop/HadoopInstall/hadoop-conf目录
在/home/dbrg/.bashrc文件中设置环境变量$HADOOP_CONF_DIR:
export HADOOP_CONF_DIR=$HOME/HadoopInstall/hadoop-conf/

1.7. Hadoop环境变量设置和配置文件修改
在/home/hadoop/HadoopInstall/hadoop-conf/hadoop_env.sh文件中设置环境变量:
export JAVA_HOME=/usr/java/jdk1.6.0_06export HADOOP_HOME=/home/hadoop/HadoopInstall/hadoop
在/home/hadoop/HadoopInstall/hadoop-conf/masters文件中设置namenode:
文件内容:
test161.sqa
在/home/hadoop/HadoopInstall/hadoop-conf/slaves文件中设置datanode:
文件内容:
test162.sqatest163.sqatest164.sqa
在/home/hadoop/HadoopInstall/hadoop-conf/ hadoop-site.xml文件中设置hadoop配置:

fs.default.name
test161.sqa:9000The name of the default file system. Either the literal
string “local” or a host:port for DFS. mapred.job.tracker
test161.sqa:9001The 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. hadoop.tmp.dir/home/hadoop/HadoopInstall/tmp
A base for other temporary directories. dfs.name.dir
/home/hadoop/HadoopInstall/filesystem/nameDetermines 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. dfs.data.dir
/home/hadoop/HadoopInstall/filesystem/dataDetermines 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. dfs.replication1Default 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.
1.8. 部署datanode节点
将namenode上安装配置完成的hadoop文件拷贝到所有datanode:
scp -r /home/hadoop/HadoopInstall test162.sqa:/home/hadoop/scp -r /home/hadoop/HadoopInstall
test163.sqa:/home/hadoop/scp -r /home/hadoop/HadoopInstall test164.sqa:/home/hadoop/
1.9. 启动Hadoop
格式化namenode
/home/hadoop/HadoopInstall/hadoop/bin/hadoop namenode -format
在/home/hadoop/HadoopInstall/hadoop/bin/下面有很多启动脚本,可以根据自己的需要来启动:
* start-all.sh 启动所有的Hadoop守护。包括namenode, datanode, jobtracker, tasktrack
* stop-all.sh 停止所有的Hadoop。
* start-mapred.sh 启动Map/Reduce守护。包括Jobtracker和Tasktrack。
* stop-mapred.sh 停止Map/Reduce守护
* start-dfs.sh 启动Hadoop DFS守护.Namenode和Datanode
* stop-dfs.sh 停止DFS守护

 

在这里,简单启动所有守护
bin/start-all.sh
同样,如果要停止hadoop,则
bin/stop-all.sh

更多信息请查看 java进阶网 http://www.javady.com

你可能感兴趣的:(Hadoop安装部署)