搭建Hadoop集群
一直以来,对Hadoop集群很感兴趣。最近得闲,就抽空把Hadoop集群搭建起来。为了日后备查,著一小文以记之。
创建用户账号
为了便于管理,建立一个专门用于搭建Hadoop集群的用户账号。创建指令如下:
sudo adduser u --ingroup sudo
注销原来的登录用户,使用用户u
登录。也可以使用如下指令,进行用户切换:
su - u
安装JDK
看了一些资料,都是安装JDK 1.6版。但是,D瓜哥觉得既然1.7已经出来这么长时间了,每一次大版本的升级,肯定会在性能、特性方面有很多提升。所以,不妨体验一下。
由于,D瓜哥使用的Ubuntu 10.04版,所以只能使用tar包,所以,打开jdk下载页面,下载jdk-7u40-linux-i586.tar.gz
。
将JDK下载到用户u
的用户根目录下,然后使用如下指令解压缩:
cd ~ tar -zxvf jdk-7u40-linux-i586.tar.gz
由于不清楚JDK的安装方法(JDK1.6版有bin格式的,以前使用这种方式安装),所以这是一个尝试。有机会再试试按照到
/usr
目录下。
解压后,需要配置一下JAVA_HOME
和CLASSPATH
。所以,修改.profile
,在这个文件中配置JAVA_HOME
、CLASSPATH
变量,并将JAVA_HOME
加入到环境变量中。修改方法如下:
-
打开.profile文件
vim ~/.profile
-
在
.profile
文件结尾处,添加的内容如下:export JAVA_HOME=/home/u/jdk1.7.0_40 export CLASSPATH=".:$JAVA_HOME/lib:$CLASSPATH" export PATH="$JAVA_HOME/:$JAVA_HOME/bin:$PATH"
-
使用如下指令,使刚刚的修改得以生效:
source ~/.profile
-
使用如下指令,测试JDK是否安装成功:
java -version javac -version
如果返回正确的版本信息,则表示JDK安装成功。否则,请检查环境变量是否正确。
配置SSH免密码登录
鉴于安全性的考虑,Hadoop集群中,各个节点之间的通讯需要一个鉴权机制。可以使用用户名+密码的方式。但是,在动辄上千台机器的集群中,很显然是不现实的。所以,SSH是更好的选择。下面D瓜哥就介绍一下配置方法。
-
安装SSH软件包。指令如下:
sudo apt-get install ssh
-
生成SSH Key。指令如下:
ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
-
创建配对的授权文件。指令如下:
cat /home/u/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
-
检查是否配置成功。指令如下:
ssh localhost
如果提示授权成功等字样,则表示配置成功。
在第二步生成SSH-Key时,刚开始使用的是如下指令:
ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys但是,试验两次,竟然不成功。所以,在这里提醒一下查看官方文档的朋友。如果官方文档的指令不成功,可以试试D瓜哥这里使用的指令。
安装并运行Hadoop
介绍Hadoop安装之前,先介绍一下Hadoop中对各个角色的定义。
Hadoop分别从三个角度将主机划分为两种角色。第一,最基本的划分为Master和Slave,即主人与奴隶;第二,从HDFS的角度,将主机划分为NameNode和DataNode(在分布式文件系统中,目录的管理很重要,管理目录相当于主人,而NameNode就是目录管理者);第三,从MapReduce的角度,讲主机划分为JobTracker和TaskTracker(一个Job经常被划分为多个Task,从这个角度就不难理解它们之间的关系)。
Hadoop有三种按照方式:单机模式、伪分布式与完全分布式。前两者便于程序的测试与调试;后者更能体现云计算的优势。D瓜哥手上有三台旧笔记本,日后肯定要搭建完全分布式的。目录是为了尝试搭建,所以这里介绍伪分布式的配置过程。过程如下:
-
下载Hadoop。打开http://www.apache.org/dyn/closer.cgi/hadoop/common/,再选择一个合适的节点打开。为了统一起见,这里下载
hadoop-1.2.1.tar.gz
版。 -
将Hadoop下载到用户
u
的用户根目录下,使用如下指令解压:tar -zxvf hadoop-1.2.1-bin.tar.gz
-
Hadoop的目录很规范,配置文件都同意放在了
HADOOP_HOME/conf/
目录下。所以,直接进入到该目录下。cd ~/hadoop-1.2.1/conf/
-
打开
conf/hadoop-env.sh
文件,配置JDK的安装位置。打开文件后,找到export JAVA_HOME
等字样,将前面的注释去掉,然后修改成如下内容:export JAVA_HOME=/home/u/jdk1.7.0_40
-
打开
conf/core-site.xml
,在该文件中添加如下内容:<configuration> <property> <name>fs.default.name</name> <value>hdfs://localhost:9000</value> </property> </configuration>
-
打开
conf/hdfs-site.xml
,在该文件中添加如下内容:<configuration> <property> <name>dfs.replication</name> <value>1</value> </property> </configuration>
-
打开
conf/mapred-site.xml
,在该文件中添加如下内容:<configuration> <property> <name>mapred.job.tracker</name> <value>localhost:9001</value> </property> </configuration>
-
进入
HADOOP_HOME/bin
目录下,使用如下指令格式化Hadoop的文件系统HDFS:./hadoop namenode -format
-
进入
HADOOP_HOME/bin
目录下,使用如下指令来启动Hadoop集群:./start-all.sh
-
打开浏览器,分别输入如下网址,查看Hadoop是否安装成功:
- http://localhost:50030 (MapReduce的Web页面)
- http://localhost:50070 (HDFS的Web页面)
如果能正常打开,则表示安装成功。否则,请检查配置过程中,输入是否正确等。
使用如下指令,可以停止Hadoop集群:
./stop-all.sh
至此全部的安装过程都已经结束了。祝尝试的朋友顺利。以后,D瓜哥会继续把三台电脑的集群搭建过程分享出来。当然,也会写一些例子来跑一跑。敬请继续关注。
参考资料
原文链接:https://wordpress.diguage.com/archives/53.html
版权声明:非特殊声明均为本站原创作品,转载时请注明作者和原文链接。