按以下步骤配置Hadoop-2.xx 集群。
一、安装单台虚拟机
1.安装VMware
直接默认安装即可,序列号百度。软件链接
2.安装ubuntu
安装系统
新建虚拟机->典型->安装程序光盘镜像(选择刚下载的系统盘)->填写用户名密码(这里我的linux名是cloud01,用户名是hduser)->默认到完成。系统盘链接(也可以换成其他linux发行版)
安装VM Ware tools
- 1. 点击菜单“虚拟机”->设备安装VM Ware tools
- 2. 将vmware-tools-distrib提取到主文件夹
- 3. 终端执行sudo vmware-tools-distrib/vmware-install.pl
3.安装jdk
-
- 下载jdk,解压到/user/java目录下 jdk
$ cd software
$ sudo cp jdk-7u51-linux-i586.tar.gz /usr/java
$ cd /usr/java
$ sudo tar -zxvf jdk-7u51-linux-i586.tar.gz
$ sudo rm jdk-7u51-linux-i586.tar.gz
-
- 配置环境变量
$ sudo gedit /etc/profile
在末尾追加
export JAVA_HOME=/usr/java/jdk1.7.0_51
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$JAVA_HOME/bin:$PATH
-
- 测试jdk配置是否正确
$ java -version
$ javac -version
如果出现版本号,则说明配置正确。否则,再配置一次。
4.安装hadoop
-
- 将下载的hadoop压缩包,解压缩到用户主目录下 hadoop2.2
-
- 配置环境变量
$ sudo gedit /etc/profile
export HADOOP_HOME=/home/hduser/hadoop-2.2.0
export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
-
- 测试Hadoop配置是否正确
$ hadoop version
如果出现hadoop的版本号,说明配置正确。
5.修改hadoop配置文件参数
位于$HADOOP_HOME/etc/hadoop/下
# 文件hadoop-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_51
# 文件core-site.xml添加至<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://cloud01:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/home/hduser/hddata/tmp</value>
</property>
# 文件hdfs-site.xml 添加至<configuration>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>cloud01:9001</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/home/hduser/hddata/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/home/hduser/hddata/dfs/data</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
# 文件mapred-site.xml:(只有模板文件,拷贝一份,改名为mapred-site.xml)
$ cp mapred-site.xml.template mapred-site.xml
# 配置内容如下 添加至<configuration>:
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<name>mapreduce.jobhistory.address</name>
<value>cloud01:10020</value>
</property>
<property>
<name>mapreduce.jobhistory.webapp.address</name>
<value>cloud01:19888</value>
</property>
# 文件yarn-site.xml 添加至<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
6.建立公共文件夹
在cloud01 的主文件夹下(/home/hduser/),已经创建了以下三个文件夹:
~/hddata/dfs/name
~/hddata/dfs/data
~/hdata/tmp
二、集群配置-网络和机器名
1.克隆虚拟机
在VMware 虚拟机中,选中左侧栏中”我的计算机| Ubuntu-01”,单击右键,依次选择”管理| 克隆…”,分别克隆两个虚拟机(用以组装三台机器的集群)。注意克隆虚拟机时正确设置新虚拟机的名称和保存位置。
2.修改网络
分别启动三台虚拟机,并分别修改每台机器的固定IP 地址(注意查看网关和DNS)。
3.修改主机名
修改每台Ubuntu 系统的主机名,分别为:cloud01、cloud02、cloud03。(主机名
存放在/etc/hostname 文件中,修改主机名时,编辑hostname 文件,在文件中输入
新的主机名并保存该文件即可。重启系统后,在终端窗口中输入命令:”hostname”
或”uname –n”,均可以查看到当前主机的主机名,来确认主机名有没有修改成功)。
$ sudo gedit /etc/hostname
cloud01
4.修改hosts
设置每台机器的ip 与主机名的对应关系(在/etc/hosts 文件中存放的是域名与ip 的
对应关系):注:请将原文件最上面的第二行127.0.1.1 删除掉,每台机器都要做。
$ sudo gedit /etc/hosts
192.168.158.128 cloud01
192.168.158.129 cloud02
192.168.158.130 cloud03
三、集群配置-安装和配置SSH 无密码登录
1.安装ssh 服务(三台机器都做)
$ sudo apt-get install ssh
或
$ sudo apt-get install openssh-server
$ ssh localhost # 会自动生成.ssh 目录(如果存在.ssh 文件夹,则应先删除.ssh(rm -rf .ssh))
或者
$ mkdir .ssh # 手工创建.ssh 目录
$ cd .ssh
$ ssh-keygen -t rsa # 一路默认next
$ cat id_rsa.pub >> authorized_keys
$ sudo service ssh restart
2.配置ssh
设置从master node(该节点将运行NameNode)到DataNode 的无密码SSH。可以使
用SSH 登录loalhost 以及所有其它的节点,而勿需密码。在cloud01 机器(master)
上,运行以下命令复制cloud01 的公钥到cloud02 和cloud03(ssh-copy-id 将本机的
公钥复制到远程机器的authorized_keys 文件中)
- 1. 在cloud01 上:
$ cd .ssh
$ ssh-copy-id hduser@cloud01
$ ssh-copy-id hduser@cloud02
-
- 测试:在cloud01 机器上,使用SSH 登录localhost 以及所有其它的节点:
$ ssh localhsot
$ ssh cloud01
$ ssh cloud02
$ ssh cloud03
四、集群配置-格式化HDFS 文件系统
1.修改slaves
在cloud01 机器上(master 主机)上修改slaves 文件:
$ cd hadoop
$ gedit etc/hadoop/slaves # 打开slaves 文件,写入下面三行
cloud01
cloud02
cloud03
2.格式化hdfs
在cloud01(NameNode)上,运行下面的命令来格式化一个新的文件系统:
$ hdfs namenode -format
注:这个格式化只做一次。如果要重新格式化HDFS,则要将原来的$HADOOP_HOME
下的hddata/name 和hddata/data 目录清空,重新格式化。
五、集群测试
1.启动hdfs
使用如下命令启动HDFS 文件系统:
$ start-dfs.sh
- 这个命令将首先启动一个master node 中的NameNode。然后它将启动在slaves 文
件中所提及到的所有机器中的DataNode 服务。最后,它将启动第二个NameNode。 - HDFS 带有一个监控web 控制台来验证安装以及监视HDFS 集群。它还能让用户探
索HDFS 文件系统的内容。该HDFS 监控控制台可以通过下面的URL 进行访问:
http://{NAMENODE}:50070/。查看监控控制台检查是否能看到HDFS 启动页面。这
里,将{NAMENODE}替换为运行HDFS NameNode 的节点的IP 地址。
http://localhost:50070/ # NameNode URL
- 另外,还可以使用如下的命令来获得HDFS 状态的报告:
$ hadoop dfsadmin -report
或
$ hdfs dfsadmin -report
# 查看文件块组成
$ hdfs dfsadmin -report
2.启动YARN
运行下面的命令来启动YARN service 服务:
$ start-yarn.sh
3.其他测试方式
- 运行下面的命令来启动MapReduce JobHistoryServer。这可以启用用于MapReduce
job 历史的web 控制台:
$ mr-jobhistory-daemon.sh start historyserver # 启用历史服务
$ mr-jobhistory-daemon.sh stop historyserver # 关闭历史服务
- 通过jps 命令列表显示进程,以检查安装情况。Master 节点将列出NameNode、
ResourceManager 和JobHistoryServer 服务。Slave 节点将列出DataNode 和
NodeManager 服务:
$ jps
- 访问http://{MASTER_NODE}:8088/,访问用于可用的ResourceManager 的基于web
的控制台页面。
http://localhost:8088/// Node Manager 和Resource Manager 的URL
- 运行pi 程序:
$ hadoop jar ./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar pi 10 20
4.关闭
最后,使用如下的命令关闭YARN service 和HDFS service:
$ stop-yarn.sh
$ stop-dfs.sh