最近项目闲下来,正好学习下目前流行的分布式系统框架,目前最火的就属hadoop了,
我这里首先是下当前最新的版本然后在公司的几台虚拟机上面进行折腾一翻,且看如下配置.
且参考出处:http://www.cnblogs.com/xia520pi/archive/2012/05/16/2503949.html
版本:2.2.0
这里的linux都是centos的系统.分别有以下三台机器做集群:
节点 IP 主机名
Master: 192.168.103.66 test66
slave1: 192.168.103.58 test58
slave2: 192.168.103.69 test69
1.设置对应的主机名:vi /etc/hosts
192.168.103.66 test66 192.168.103.69 test69 192.168.103.58 test58
注:每台节点的机器都设置一遍.
2.设置各节点间实现ssh无密码登录.
也就是一个无密码登录的公钥认证,其原理:Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode | Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端Master复制到Slave上。
请确保ssh和rsync已经安装了,查看命令:
rpm –qa | grep openssh rpm –qa | grep rsync
生成密钥对.
ssh-keygen –t rsa –P ''
这条命是生成其无密码密钥对,询问其保存路径时直接回车采用默认路径。生成的密钥对:id_rsa和id_rsa.pub,默认存储在"~/.ssh"目录下。
接着在Master节点上做如下配置,把id_rsa.pub追加到授权的key里面去
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
用root用户登录服务器修改SSH配置文件"/etc/ssh/sshd_config"的下列内容。
RSAAuthentication yes # 启用 RSA 认证 PubkeyAuthentication yes # 启用公钥私钥配对认证方式 AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
设置完之后记得重启SSH服务,才能使刚才设置有效.
service sshd restart
退出登录.然后重新登录之后执行如下:
ssh localhost
看是否需要输入密码登录,如果自动登录说明我们设置成功了.
同样的原理将Master机器上的公钥文件(id_rsa.pub)分别拷贝到slave1和slave2上面,执行如下命令:
scp ~/.ssh/id_rsa.pub 远程用户名@远程服务器IP:~/
例如:
scp ~/.ssh/id_rsa.pub test58:~/
这里到slave1(192.168.103.58)节点~/执行如下命令:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
同样slave2节点的部分同样,这里略,这种设置可以实现各节点机器无密码登录Master机器.
还有记得修改各节点的/etc/ssh/sshd_config 文件同Master机器配置的时候的步骤一样
同理反过来,Master无密码访问节点的设置一样,这里大家应该清楚了,有疑问可以留言,谢谢!
3.设置Java环境以及安装Hadoop.
在各节点机器上安装java环境,路径等最好保持一致.
这里的JAVA_HOME=/usr/java/jdk1.6.0_12/
讲下载下来的最新版本的hadoop-2.2.0.tar.gz解压到/var/opt/:
cd /var/opt tar -zxf hadoop-2.2.0.tar.gz
添加Java环境变量以及hadoop环境变量:
在"/etc/profile"文件的尾部添加以下内容:
#set java environment export JAVA_HOME=/usr/java/jdk1.6.0_12/ export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib export HADOOP_HOME=/var/opt/hadoop export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$HADOOP_HOME/bin::$HADOOP_HOME/sbin
使其生效命令:
source /etc/profile
注:这里各节点机器步骤同样.
然后在Master机器上面分别进行配置:
vi /var/opt/hadoop/etc/hadoop/hadoop-env.sh vi /var/opt/hadoop/etc/hadoop/yarn-env.sh
都是修改 export JAVA_HOME=/usr/java/jdk1.6.0_12
其它节点的同样这样修改.
同样在Master(192.168.103.66)节点机器上:
vi /var/opt/hadoop/etc/hadoop/core-site.xml
配置如下内容:
<configuration> <property> <name>hadoop.tmp.dir</name> (备注:请先在 /var/opt/hadoop 目录下建立 tmp 文件夹) <value>/var/opt/hadoop/tmp</value> <description>A base for other temporary directories.</description> </property> <!-- file system properties --> <property> <name>fs.default.name</name> <value>hdfs://192.168.103.66:9000</value> </property> </configuration>
备注:如没有配置hadoop.tmp.dir参数,此时系统默认的临时目录为:/tmp/hadoo-hadoop。而这个目录在每次重启后都会被干掉,必须重新执行format才行,否则会出错。
配置hdfs-site.xml文件
vi /var/opt/hadoop/etc/hadoop/hdfs-site.xml
配置内容如下:
<property> <name>dfs.replication</name> <value>1</value> </property>
注:同样各节点机器配置相同.
配置mapred-site.xml文件:
vi /var/opt/hadoop/etc/hadoop/mapred-site.xml
配置内容如下:
<configuration> <property> <name>mapred.job.tracker</name> <value>http://192.168.103.66:9001</value> </property> </configuration>
注:同样各节点机器配置相同.
配置masters:
vi /var/opt/hadoop/etc/hadoop/masters
内容如下:
192.168.103.66
注:如果没有就新建这个文件.
注:同样各节点机器配置相同.
配置slaves(只有主机Master上面才进行配置):
vi /var/opt/hadoop/etc/hadoop/slaves
内容如下:
192.168.103.58 192.168.103.69
注:如果没有就新建.只在Master上进行配置.
4.启动以及验证.
格式化HDFS文件系统:
hadoop namenode -format
在"Master"上进行操作。(备注:只需一次,下次启动不再需要格式化,只需 start-all.sh)
准备启动hadoop,
准备启动hadoop之前集群中各机器上的防火墙需要关闭,不然会出现datanode开后又自动关闭。
service iptables stop
启动hadoop:
start-all.sh
启动 hadoop成功后,在 Master 中的 tmp 文件夹中生成了 dfs 文件夹,在Slave 中的 tmp 文件夹中均生成了 dfs 文件夹和 nm-local-dir 文件夹。
验证方法一:用"jps"命令
jps
验证方式二:用"hadoop dfsadmin -report"
hadoop dfsadmin -report
web查看:
界面如下展示:
NameNode 'test66:9000' (active)
Started: | Tue Dec 31 22:50:08 CST 2013 |
Version: | 2.2.0, 1529768 |
Compiled: | 2013-10-07T06:28Z by hortonmu from branch-2.2.0 |
Cluster ID: | CID-e4416aea-3eac-4a56-b130-c580b981732a |
Block Pool ID: | BP-1148259589-127.0.0.1-1388165246645 |
Browse the filesystem
NameNode Logs
Cluster Summary
Configured Capacity | : | 34.67 GB | |||
DFS Used | : | 48 KB | |||
Non DFS Used | : | 14.91 GB | |||
DFS Remaining | : | 19.76 GB | |||
DFS Used% | : | 0.00% | |||
DFS Remaining% | : | 56.99% | |||
Block Pool Used | : | 48 KB | |||
Block Pool Used% | : | 0.00% | |||
DataNodes usages | : | Min % | Median % | Max % | stdev % |
0.00% | 0.00% | 0.00% | 0.00% | ||
Live Nodes | : | 2 (Decommissioned: 0) | |||
Dead Nodes | : | 0 (Decommissioned: 0) | |||
Decommissioning Nodes | : | 0 | |||
Number of Under-Replicated Blocks | : | 0 |
NameNode Journal Status:
Current transaction ID: 8
Journal Manager | State |
FileJournalManager(root=/var/opt/hadoop/tmp/dfs/name) | EditLogFileOutputStream(/var/opt/hadoop/tmp/dfs/name/current/edits_inprogress_0000000000000000008) |
NameNode Storage:
Storage Directory | Type | State |
/var/opt/hadoop/tmp/dfs/name | IMAGE_AND_EDITS | Active |
Startup Progress
Loading fsimage /var/opt/hadoop/tmp/dfs/name/current/fsimage_0000000000000000002 (196 B) | 100.00% | 0sec |
inodes (1/1) | 100.00% | 0sec |
delegation keys (0/0) | 100.00% | 0sec |
delegation tokens (0/0) | 100.00% | 0sec |
Loading edits | 100.00% | 0sec |
/var/opt/hadoop/tmp/dfs/name/current/edits_0000000000000000003-0000000000000000003 (1 MB) (1/1) | 100.00% | 0sec |
Saving checkpoint | 100.00% | 0sec |
Safe mode | 100.00% | 0sec |
awaiting reported blocks (0/0) | 100.00% | 0sec |
Hadoop, 2013.
可以点击活动节点查看集群节点状态,至此hadoop已经部署成功,后面在进一步学习使用.