一. 准备软件
1. hadoop-1.2.0.tar.gz -------------apache官网下载
2. ubuntu-12.04.1-desktop-i386.iso ------网下(ubuntu 9.0以上皆可)
3. VMware® Workstation 9.0.0 build-812388
4. UltraISO -----便于向虚拟机内传送文件。
5. jre-7u25-linux-i586.gz。
二. 安装VMware 9.0(下一步就行)
三. 安装ubuntu
非常简单的工作,只需要安装一个ubuntu就可以了,注意安装的时候把VMware状态栏的:
右击第四选Disconnect,这样ubuntu在安装的时候 就不会去下载耗时比较久的语言包,速度也就更快一点。安装的时候我的ubuntu用户名为hadoop,这样方便统一管理。分配的内存为1G,单个cpu,网络连接方式为NAT,当然如果您想在多台电脑上部署就选择Bridged(此时要注意局域网内IP地址时刻的变化)
四. 配置ubuntu
1.完成ubuntu的安装工作后,首先要激活root用户:
sudo passwd root
输入您的hadoop用户的密码,然后就可以初始化密码了。
2.给hadoop用户添加权限,打开/etc/sudoers文件;
sudo gedit /etc/sudoers
按回车键后就会打开/etc/sudoers文件了,给hadoop用户赋予root用户同样的权限。在root ALL=(ALL:ALL) ALL下添加hadoop ALL=(ALL:ALL) ALL,
3. 安装JDK环境。
采用sudo apt-get install openjdk-6-jre方法一般会遇到一些问题,比如无法找到源或者更新冲突或者下载速度缓慢,建议下jdk源码安装。我下载的是jre-7u25-linux-i586.gz。首先使用UltraISO 把文件移动到ubuntu中。
然后解压并移动到/opt文件夹内:
sudo tar -zxvf jre-7u25-linux-i586.gz
sudo mv jre1.7.0_25 /opt/
然后配置环境变量,配置环境变量要非常小心,稍有错误就导致开不了机,网上很多傻逼帖都说各种方法,我试完之后均开不了机,真是屡试不爽啊!请不要相信他们。
sudo gedit /etc/environment
在引号内加入 :/opt/jre1.7.0_25 ,注意一定冒号隔开。然后更新bashrc
source ~/.bashrc
更新默认java bin位置
sudo update-alternatives --install /usr/bin/java java /opt/jre1.7.0_25/bin/java 300
使用java –version验证。如果:
java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) Client VM (build 23.25-b01, mixed mode)
恭喜您已经成功了。
4.安装ssh
sudo apt-get install ssh openssh-server
ssh是负责各机器中通信的服务,只支持linux,这就是为什么hadoop不能在windows下运行的原因了。如果报下面错误,证明有install占用系统锁
E: Could not get lock /var/lib/apt/lists/lock - open (11: Resource temporarily unavailable)
E: Unable to lock the list directory
使用:
ps -e | grep apt
显示结果如下:
6362 ? 00:00:00 apt
6934 ? 00:00:00 apt-get
7368 ? 00:00:00 synaptic
然后就执行
sudo killall apt
sudo killall apt-get
sudo killall synaptic
安装结束用一下命令验证:ps -e | grep ssh,如果出现:
1963 ? 00:00:00 ssh-agent
3765 ? 00:00:00 sshd
3849 pts/0 00:00:00 ssh
3850 ? 00:00:00 sshd
4001 ? 00:00:00 sshd
证明已经安装完成。
五. 分开master和slaver
现在我们已经有了一个带jre,带ssh服务的虚拟机了。现在我们要做的事情就是分开master和slaver的角色,因为下面它们的流程完全不同。首先关掉虚拟机,复制在不同的文件夹中共4份,三个slaver一个master,为了方便记忆我们将它们分别叫做:
1.master
2.slaver1
3.slaver2
4.slaver3
当然对于内存大小为4G以下的同学,这里建议1个salver一个master共2台虚拟机,再小的内存请使用多台机器,还记得我们上面讲的虚拟机网络连接方式么?这里就要使用Bridged,当然其他都是一样的,只不过需要每次开机的时候检查ip地址是否有变化。我的内存是10G,同时开启8台ubuntu无压力,现在内存条非常便宜,大家可以按需要采购。这里还需要大家注意一点,要备份一个版本这个纯净的ubuntu,以防止意外失误导致无法使用。另外还需要文明关机。
切记一点,打开每一个虚拟机,虚拟机会问:你是复制的呢还是拷贝的呢,这个时候一定要诚实,选择I copy it。我当时由于装逼选择move it,后来整的mac地址冲突让我好好的喝了一壶哈哈!
1. 打开master,slaver1,slaver2,slaver3,
sudo gedit /etc/hostname
将所有虚拟机改成对应的名称,例如master的写master,slaver1的写slaver1.
重启之后会发现命令行开头所有hadoop@hadoop:~$ 都会变成hadoop@master:~$或者hadoop@slaver1:~$等。
使用ifconfig查看每一个slaver和master的ip,把他们记录下来保存好。
聪你一定知道哪个是IP
2.修改master的host文件
sudo gedit /etc/hosts
把所有IP填进去,在后面添加内容为:
192.168.101.137 master
192.168.101.138 slaver1
192.168.101.139 slaver2
192.168.101.140 slaver3
六. 给mater安装hadoop
首先用UltraISO 把hadoop-1.2.0.tar.gz压成镜像文件,然后传入ubuntu中,并且拷贝到自己的home目录(千万不要拷贝到系统目录然后修改文件夹权限这种事情,会让你后续工作很艰难的!),然后解压,把名字改成hadoop,当然我在外面是又套了个hadoop文件夹。
sudo tar -zxf hadoop-0.20.203.0rc1.tar.gz
sudo chown -R hadoop:hadoop hadoop
在conf文件夹中找到hadoop-env.sh,编辑!!
在下面加入jre的地址,我的是:
export JAVA_HOME=/opt/jre1.7.0_25
七. 给mater的hadoop配置五大文件
1.首先是core-site.xml,hdfs位置设为master的ip,并为其设置hdfs文件夹。
<?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://192.168.101.137:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop/temp</value>
</property>
</configuration>
2. 是mapred-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>mapred.job.tracker</name>
<value>master:9001</value>
</property>
</configuration>
3. 是hdfs-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>dfs.name.dir</name>
<value>/home/hadoop/hadoop/datalog1,/home/hadoop/hadoop/datalog2</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/home/hadoop/hadoop/data1,/home/hadoop/hadoop/data2</value>
</property>
<property>
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
4. masters填写主机名
master
5.slaves,填写所有slaver的名字。
slaver1
slaver2
slaver3
八. ssh服务配置
创建ssh-key,这里我们采用rsa方式;(回车两次)
ssh-keygen -t rsa -P ""
进入~/.ssh/目录下,将id_rsa.pub追加到authorized_keys授权文件中
cd ~/.ssh
cat id_rsa.pub >> authorized_keys
九. master向slaver各种复制(在master上操作)
1. 复制公钥
scp ~/.ssh/id_rsa.pub hadoop@slaver1:~/.ssh/
scp ~/.ssh/id_rsa.pub hadoop@slaver2:~/.ssh/
scp ~/.ssh/id_rsa.pub hadoop@slaver3:~/.ssh/
2. 复制hosts文件
3. 复制hadoop文件夹,复制之前先要:
sudo chown -R hadoop:hadoop hadoop
后复制
scp -r hadoop hadoop@slaver3:/home/hadoop
sudo chown -R hadoop:hadoop hadoop,然后复制
scp -r hadoop hadoop@slaver3:/home/hadoop
4. 顺便还要将复制过来的公钥追加到收信任列表:(每个slaver都要在其机器上做一遍)
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
十. 验证是否安装成功
1. 首先fomat一下namenode ,清空之前的数据
./hadoop namenode -format
如果处于安全模式请离开安全模式:
./hadoop dfsadmin -safemode leave
2. 在hadoop文件夹内bin目录中输入:
./start-all.sh
会看到:
starting namenode, logging to /home/hadoop/hadoop/hadoop/libexec/../logs/hadoop-hadoop-namenode-master.out
slaver1: starting datanode, logging to /home/hadoop/hadoop/hadoop/libexec/../logs/hadoop-hadoop-datanode-slaver1.out
slaver2: starting datanode, logging to /home/hadoop/hadoop/hadoop/libexec/../logs/hadoop-hadoop-datanode-slaver2.out
slaver3: starting datanode, logging to /home/hadoop/hadoop/hadoop/libexec/../logs/hadoop-hadoop-datanode-slaver3.out
master: starting secondarynamenode, logging to /home/hadoop/hadoop/hadoop/libexec/../logs/hadoop-hadoop-secondarynamenode-master.out
starting jobtracker, logging to /home/hadoop/hadoop/hadoop/libexec/../logs/hadoop-hadoop-jobtracker-master.out
slaver1: starting tasktracker, logging to /home/hadoop/hadoop/hadoop/libexec/../logs/hadoop-hadoop-tasktracker-slaver1.out
slaver3: starting tasktracker, logging to /home/hadoop/hadoop/hadoop/libexec/../logs/hadoop-hadoop-tasktracker-slaver3.out
slaver2: starting tasktracker, logging to /home/hadoop/hadoop/hadoop/libexec/../logs/hadoop-hadoop-tasktracker-slaver2.out
注意,一个都不能少,少一个请自行百度。
3. 输入./stop-all.sh
会有:
stopping jobtracker
slaver2: stopping tasktracker
slaver3: stopping tasktracker
slaver1: stopping tasktracker
stopping namenode
slaver2: stopping datanode
slaver1: stopping datanode
slaver3: stopping datanode
master: stopping secondarynamenode
注意,一个都不能少,少一个请自行百度。
4. 浏览器中输入:http://192.168.101.137:50030/ 访问hadoop主页可以访问
5. 浏览器中输入:http:192.168.1.2:50070