版本v0.1
系统安装
环境说明
用户管理
ssh服务端与客户端设置
安装jdk
安装hadoop
运行测试
使用一台电脑,在该电脑上安装ubuntu虚拟机,使用两台虚拟机连成一个集群(可以根据需要另外扩展)。具体配置如下:
1、宿主机:
硬件:(1)cpu:4核4线程 intel i5-2400 3.10Ghz
(2)内存:4G
软件:(1)32位XP系统 最大内存识别为3G。
(2)vmware-workstation-9.0.1-894247
2、虚拟机:
硬件:(1)cpu:每个虚拟机分配2个核心1个线程
(2)内存:每个虚拟机 512M
(3)磁盘空间:每个虚拟机分配40G的磁盘空间。
软件:(1)ubuntu-12.04版本
(2)jdk版本:jdk-6u31-linux-i586.bin
(3):hadoop版本:hadoop-0.20.203
分区方案按照默认模式下的分区:
可以使用df –l –h命令来查看当前磁盘。
使用Ubuntu Server安装过程还是比较简单的,就是要注意在进行系统分区的时候选择是否对磁盘进行划分。对于双硬盘的电脑可以尝试使用软件raid。
安装过程中注意选中ssh服务,采用NAT来连接宿主机的网络。
集群中包括2个节点:1个Master,1个Salve,节点之间局域网连接,可以相互ping通。节点IP地址分布如下:
机器名称 | IP地址 |
Master | 192.168.235.129 |
Salve | 192.168.235.131 |
Salve1 | Null |
Salve2 | Null |
以上两个节点上均是ubuntu系统,并且有一个相同的用户hadoop。Master机器主要配置NameNode和JobTracker的角色,负责总管分布式数据和分解任务的执行; Salve机器配置DataNode和TaskTracker的角色,负责分布式数据存储以及任务的执行。其实应该还应该有1个Master机器,用来作为备用,以防止Master服务器宕机,还有一个备用马上启用。后续经验积累一定阶段后补上一台备用Master机器,另外准备再加上两台slave机器。
一.如果已有用户xxx,需要新建一个用户hadoop,则可以按照以下操作:
1. 在xxx用户下运行命令groups查看当前用户所属组,并记录下来
2. 创建hadoop用户组 sudo addgroup hadoop
3. 创建hadoop用户 sudo adduser -ingroup hadoop hadoop
4. 给hadoop用户添加权限,打开/etc/sudoers文件:sudo gedit /etc/sudoers
然后再sudoers中给hadoop用户赋予root用户同样的权限:
在root ALL=(ALL:ALL) ALL下添加hadoop ALL=(ALL:ALL) ALL 保存即可。
二.修改机器名:
每当ubuntu安装成功时,我们的机器名都默认为:ubuntu ,但为了以后集群中能够容易分辨各台服务器,需要给每台机器取个不同的名字。机器名由 /etc/hostname文件决定。
1. 打开/etc/hostname文件; sudo gedit /etc/hostname
2. 将/etc/hostname文件中的ubuntu改为你想取的机器名。这里取master,slave。 重启系统后才会生效。
三.修改hosts文件(重要)
"/etc/hosts"这个文件是用来配置主机将用的DNS服务器信息,是记载LAN内接续的各主机的对应[HostName和IP]用的。当用户在进行网络连接时,首先查找该文件,寻找对应主机名(或域名)对应的IP地址。
我们要测试两台机器之间知否连通,一般用"ping 机器的IP",如果想用"ping 机器的主机名"发现找不见该名称的机器,解决的办法就是修改"/etc/hosts"这个文件,通过把LAN内的各主机的IP地址和HostName的一一对应写入这个文件的时候,就可以解决问题。
在master跟slave主机中打开/etc/hosts文件,sudo nano /etc/hosts。在文件中加入以下内容:
192.168.235 .129 Master
192.168.235.131 Slave1
Ip地址可用ifconfig指令来查看。
如果之前没有选择安装SSH服务,则可以使用apt-get install openssh-server来安装。
修改ssh的配置文件,vi /etc/ssh/sshd_config,取消AuthorizedKeysFile %h/.ssh/authorized_keys的注释,然后将key文件放在当前用户主目录的.ssh/authorized_keys文件中。
一般是把自己的公钥放到这个文件中。但是如果客户端是windows的话,会遇到一个问题,windows下生成的密钥和linux下生成的不一样,所以,需要在linux下生成公私钥,然后将私钥拷贝到客户机,并删除服务器上的私钥,利用putty的puttygen.exe导入后重新转换才能使用。具体步骤如下:
1. 在master机器上生成密钥对:
首先进入到hadoop用户,执行
ssh-keygen –t rsa –P ''
来生成其无密码密钥对,询问其保存路径时直接回车采用默认路径。生成的密钥对:
id_rsa和id_rsa.pub,默认存储在"/home/hadoop/.ssh"目录下
2、 进入~/.ssh/目录下,将id_rsa.pub追加到authorized_keys授权文件中,开始是没有authorized_keys文件的:
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
3、修改文件"authorized_keys"权限:
chmod 600 ~/.ssh/authorized_keys
4、设置ssh配置:
用root用户登录服务器修改SSH配置文件"/etc/ssh/sshd_config"的下列内容
RSAAuthentication yes # 启用 RSA 认证
PubkeyAuthentication yes # 启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同)
设置完之后重启SSH服务,才能使刚才设置有效。
service sshd restart
退出root登录,使用hadoop普通用户验证是否成功。
ssh localhost
5、把公钥复制到slave机器上
(1)、把Master上的公钥复制到Slave上
scp ~/.ssh/id_rsa.pub hadoop@192.168.235.131:~/
(2)、在"/home/hadoop/"下创建".ssh"文件夹,并赋予权限
mkdir ~/.ssh
chmod 700 ~/.ssh
(3)、追加到授权文件"authorized_keys"
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
(4)、用root用户修改"/etc/ssh/sshd_config"
具体步骤参考前面Master的"设置SSH配置",具体分为两步:第1是修改配置文件;第2是重启SSH服务
6、登陆:ssh 远程服务器IP(第一次可能需要输入密码,以后就不需要了)
linux下的java有两种一个是openjdk一个sun的。因为一些原因,Sun Java 无法从 Ubuntu 的软件库里面取得取而代之的是 OpenJDK,不过 OpenJDK 跑某些程式会出现问题所以还是需要 Sun Java 。
安装过程:
1)首先删除掉已经安装的openjdk sudo apt-get purge openjdk*
2)sudo add-apt-repository "deb http://archive.canonical.com/ubuntu maverick partner"
3)sudo apt-get install python-software-properties
4)sudo apt-get update
5)sudo apt-get install sun-java*
6)sudo apt-get install openjdk-6-jdk openjdk-6-jdk gcj-4.6-jdk ecj default-jdk
7)配置JAVA环境变量: sudo gedit /etc/environment
在其中添加如下两行:
JAVA_HOME=/usr/lib/jvm/java-6-sun
CLASSPATH=.:/usr/lib/jvm/java-6-sun/lib
8)java -version查看不出错说明,成功
所有的机器上都要安装hadoop,现在就先在Master服务器安装,然后其他服务器按照步骤重复进行即可。安装和配置hadoop需要以"root"的身份进行。
我们采用的hadoop版本是:hadoop-0.20.203。因为该版本比较稳定。最新的alpha版本已经很高,但是还是建议采用稳定的版本。我是在apache站点直接下载的
(http://www.apache.org/dyn/closer.cgi/hadoop/common/)。
1. 假设hadoop-0.20.203.tar.gz在桌面,将它复制到安装目录 /usr/local/下
Sudo cp hadoop-0.20.203.0rc1.tar.gz /usr/local/
2. 解压hadoop-0.20.203.tar.gz
cd /usr/local
sudo tar -zxf hadoop-0.20.203.0rc1.tar.gz
3. 将解压出的文件夹改名为hadoop;
sudo mv hadoop-0.20.203.0 hadoop
4. 将该hadoop文件夹的属主用户设为hadoop,
sudo chown -R hadoop:hadoop hadoop
5. 打开hadoop/conf/hadoop-env.sh文件;
sudo gedit hadoop/conf/hadoop-env.sh
6. 配置conf/hadoop-env.sh(找到#export JAVA_HOME=...,去掉#,然后加上本机jdk的路径)
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk
7. 打开conf/core-site.xml文件;
sudo gedit hadoop/conf/core-site.xml
编辑如下:property后面需要手工敲
<?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://localhost:9000</value>
</property>
</configuration>
8. 打开conf/mapred-site.xml文件;
sudo gedit hadoop/conf/mapred-site.xml
编辑如下property后面需要手工敲:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!-- Put site-specific property overrides in this file. -->
<configuration>
<property>
<name>mapred.job.tracker</name>
<value>localhost:9001</value>
</property>
</configuration>
9. 打开conf/hdfs-site.xml文件;
sudo gedit hadoop/conf/hdfs-site.xml
编辑如下:
<configuration>
<property>
<name>dfs.name.dir</name>
<value>/usr/local/hadoop/datalog1,/usr/local/hadoop/datalog2</value>
</property>
<property>
<name>dfs.da
<value>/usr/local/hadoop/da
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
</configuration>
10.配置master文件
sudo gedit hadoop/conf/masters
修改为master的ip地址192.168.235.129
11.配置slave文件(master特有)
sudo gedit hadoop/conf/slaves
去掉"localhost",加入集群中所有Slave机器的IP,每行一个。
至此配置完成。
1.格式化HDFS文件系统
在"Master. "上使用普通用户hadoop进行操作。(备注:只需一次,下次启动不再需要格式化,只需 start-all.sh)
hadoop namenode –format
2、启动hadoop
在启动前关闭集群中所有机器的防火墙,不然会出现datanode开后又自动关闭
service iptables stop
使用下面命令启动。
start-all.sh
3、检测hadoop是否启动成功
Jps
hadoop dfsadmin -report用这个命令可以查看Hadoop集群的状态。
4、网页查看集群
1)访问"http:192.168.235.129:50030"
2)访问"http:192.168.235.129:50070"
联系客服