VMware下配置三台ubuntu-14.04.3的虚拟机:
master 192.168.13.130
slave1 192.168.13.131
slave2 192.168.13.132
一.以下操作step1-step3三台机器上都要操作:
1.创建hadoop用户名
#sudouseradd -m hadoop -s /bin/bash
/*创建了hadoop 用户,并使用 /bin/bash 作为 shell。
# sudopasswd hadoop
#sudoadduser hadoop sudo
在登陆界面使用刚创建的 hadoop 用户进行登陆。
2..更新apt
#sudoapt-get update
可能会出现下面error:
/var/lib/apt/lists/cn.archive.ubuntu.com_ubuntu_dists_trusty_main_i18n_Translation-en
解决方法:sudo rm /var/lib/apt/lists/* -vfR删除apt-getinstall 的所有软件状态包。然后再次执行sudoapt-get update
3.Java环境
#sudoapt-get install openjdk-7-jre openjdk-7-jdk
#默认安装位置为 /usr/lib/jvm/java-7-openjdk-amd64
#dpkg -L openjdk-7-jdk| grep '/bin/javac' #查询安装路径
接着配置 JAVA_HOME 环境变量
#vim /home/hadoop/.bashrc
在文件最前面添加:
exportJAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
让环境变量生效并查询:
#source /home/hadoop/.bashrc
#echo $JAVA_HOME
二.修改主机名和所用节点的IP映射
1.192.168.13.130的机器(master):#vi /etc/hostname
输入master,保存退出。需要重启才能生效
#vi /etc/hosts
默认有2个127.0.0.1,只保留127.0.0.1 localhost这个
然后在下面添加下面信息并保存:
192.168.13.130 master
192.168.13.131 slave1
192.168.13.132 slave2
2.192.168.13.131的机器(slave1):
#vi /etc/hostname
输入slave1,保存退出。需要重启才能生效
#vi /etc/hosts
默认有2个127.0.0.1,只保留127.0.0.1 localhost这个
然后在下面添加下面信息并保存:
192.168.13.130 master
192.168.13.131 slave1
192.168.13.132 slave2
3.192.168.13.131的机器(slave2):
#vi /etc/hostname
输入slave2,保存退出。需要重启才能生效
#vi /etc/hosts
默认有2个127.0.0.1,只保留127.0.0.1 localhost这个
然后在下面添加下面信息并保存:
192.168.13.130 master
192.168.13.131 slave1
192.168.13.132 slave2
4.分别三台机器上执行ping 命令,确认能互相通信
ping master
ping slave1
ping slave2
三.SSH无密码登录节点设定
1.master,slave1,slave2分别做安装操作
#sudoapt-get install openssh-server
2.master上如下操作
(1)使用命令登录本机:#ssh localhost 或者#ssh master ,登录成功后exit退出ssh,/home/hadoop/下会自动创建一个.ssh文件夹(隐藏的)
(2)
# cd /home/hadoop/.ssh
#ssh-keygen-t rsa # 会有提示,一路按回车就可以
#cat ./id_rsa.pub >> ./authorized_keys # 加入授权
此后,再用 ssh localhost 命令,无需输入密码就可以登录了
(3)master节点将上公匙传输到slave1,slave2节点
#scp /home/hadoop/.ssh/id_rsa.pub hadoop@slave1:/home/hadoop
#scp /home/hadoop/.ssh/id_rsa.pub hadoop@slave2:/home/hadoop
3.slave1,slave2 节点上,将ssh 公匙加入授权:
(1)#mkdir /home/hadoop/.ssh(2)#cat /home/hadoop/id_rsa.pub >> /home/hadoop/.ssh/authorized_keys
4.master上进行检验:
#ssh slave1
#ssh slave2
四.在master上安装 Hadoop 2.6.3,完成后copy到slave1,slave2
(1)master上安装 Hadoop
a.
http://mirrors.cnnic.cn/apache/hadoop/common/ 下载hadoop-2.6.3.tar.gz 这个文件
# 解压到/usr/local中
#sudotar -zxf /下载目录/hadoop-2.6.3.tar.gz-C /usr/local
#cd/usr/local/
#sudo mv ./hadoop-2.6.3/ ./hadoop # 将文件夹hadoop-2.6.3改为hadoop
#sudo chown -R hadoop:hadoop ./hadoop # 修改文件权限
#cd/usr/local/hadoop
#./bin/hadoopversion #检查 Hadoop 是否可用
b.修改PATH环境变量。(和JAVA_HOME一样)
#vim /home/hadoop/.bashrc
在JAVA_HOME下面添加:
exportPATH=$PATH:/usr/local/hadoop/sbin:/usr/local/hadoop/bin
#source /home/hadoop/.bashrc
文件core-site.xml
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>sample.</description>
</property>
</configuration>
文件 hdfs-site.xml,dfs.replication 一般设为 3,(只有一个 Slave 节点,dfs.replication 的值还是设为 1):
<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>master:50090</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
文件 mapred-site.xml :
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
文件 yarn-site.xml:
<configuration>
<property>
<name>yarn.resourcemanager.hostname</name>
<value>master</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
(2)将Master 上的/usr/local/和adoop 文件夹复制到slave1,slave2上
#sudo tar -zcf /usr/local/hadoop.master.tar.gz /usr/local/hadoop # 先压缩再复制
#scp /usr/local/hadoop.master.tar.gz 是lave1:/home/hadoop
#scp /usr/local/hadoop.master.tar.gz 是lave2:/home/hadoop
(3)分别在slave1,slave2上解压,并赋予文件夹权限
#sudo tar -zxf /home/hadoop/hadoop.master.tar.gz -C /usr/local
#sudo chown -R hadoop:hadoop /usr/local/hadoop
五..在master上首次启动需要执行NameNode 的格式化:
#hdfs namenode -format
六.启动 hadoop 了,启动需要在 master 节点上进行:
1. start-dfs.sh
2. start-yarn.sh
3. mr-jobhistory-daemon.sh start historyserver
jps 可以查看各个节点所启动的进程。master 节点上可以看到 NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer
4.在slave1,slave2 节点用jps可以看到 DataNode 和 NodeManager 进程
5.dfsadmin可以查看DataNode的状态
也可以通过 Web 页面看到查看 DataNode 和 NameNode 的状态:http://master:50070/
七.执行分布式实例
#hdfs dfs -mkdir -p /user/hadoop
将 /usr/local/hadoop/etc/hadoop 中的配置文件作为输入文件复制到分布式文件系统中:
#hdfs dfs -mkdir input
#hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml input
在http://master:50070/的data状态中[block pool used]的大小会发生改变。
接着运行 MapReduce 作业了:
#hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'
同样通过 Web 界面查看任务进度 http://master:8088/cluster,在 Web 界面点击 “Tracking UI” 这一列的 History 连接,可以看到任务的运行信息
注意:如果在window的firefox上Tracking UI的history无法查看的话,需要修改system32/drivers/etc/hosts的内容。把192.168.13.130 master给添加上去。
八.关闭 Hadoop 集群,在 Master 上执行的:
#stop-yarn.sh
#stop-dfs.sh
#mr-jobhistory-daemon.sh stop historyserver
完!