系统架构
操作步骤
【注】本步骤以Master
为例,其他虚拟机可以使用克隆
功能复制,然后更改
安装常用软件
安装vim
sudo apt-get install vim |
安装工具包
设置共享文件夹
- 安装
VirtualBox增强功能包
,Ubuntu
系统直接点击设备->安装增强功能
- 剩余步骤看教程
安装JDK
创建用户组
创建用户组
每个主机都需要加入到同一用户组。此处创建名为hadoop
用户组
sudo addgroup hadoop |
查看当前用户
who |
当前用户为t
添加当前用户到用户组
sudo adduser t hadoop #sudo adduser user group |
查看归属用户组
groups t #group user |
安装Hadoop
下载Hadoop
点击链接下载
解压Hadoop
将文件复制到/Downloads/
文件夹下进行解压
cd Downloads/ |
将解压后的文件夹移动到/usr/
文件夹
sudo mv hadoop-2.7.5/ /usr/ |
配置文件
需要配置的文件都在解压后的hadoop-2.7.5
即usr/hadoop-2.7.5/
文件夹中的/etc/hadoop/
文件夹中
配置hadoop-env.sh
cd /usr/hadoop-2.7.5/etc/hadoop/ |
添加java安装路径
配置core-site.xml
<configuration> |
【说明】
<name>fs.default.name</name> |
此参数设置NameNode
的URI,此处设master
主机为NameNode
<name>hadoop.tmp.dir</name> |
此参数设置Hadoop的一个临时目录,用来存放每次运行的作业jpb的信息。
此处设置/home/t/hadoop/tmp
为临时目录,因没有此目录,因此需要先创建
sudo mkdir /home/t/hadoop/tmp |
【附】
其他部分参数,如需要更多参数,请自查
参数 | 默认值 | 说明 |
---|---|---|
fs.default.name | file:/// | NameNode的URI |
hadoop.tmp.dir | 临时目录位置 | |
hadoop.native.lib | true | 是否使用hadoop的本地库 |
hadoop.http.filter.initializers | 空 | 设置Filter初始器 |
配置hdfs-site.xml
<configuration> |
【说明】
<name>dfs.name.dir</name> |
dfs.name.dir
存储永久性的元数据的目录列表。这个目录会创建在master
主机上。
<name>dfs.data.dir</name> |
dfs.data.dir
存放数据块的目录列表,这个目录在node1
和node2
上创建
<name>dfs.replication</name> |
dfs.replication
设置文件副本数,此处有两个从机,设置副本数为2
配置mapred-site.xml
先创建mapred-site.xml
,进入到~/etc/hadoop/
文件夹下
cp mapred-site.xml.template mapred-site.xml |
<configuration> |
配置slaves
把其他从机的主机名添加,有几个就添加几个,多添加会无法运行
配置环境变量
sudo vim /etc/profile |
将环境变量添加即可
export HADOOP_HOME=/usr/hadoop-2.7.5 |
更新生效
source /etc/profile |
运行是否配置环境变量成功
hadoop version |
【注】此步骤完成之后,可以克隆两个虚拟机分别命名为node1
,node2
更改网络配置
虚拟机设置
【注】所有虚拟机都需要进行此步操作
点击控制->设置->网络
,连接方式选择桥接网卡
,然后重启虚拟机
修改Hostname
sudo vim /etc/hostname |
【注】其他虚拟机修改其Hostname
为相应的名称
以master
为例,直接改为
修改hosts
文件
sudo vim /etc/hosts |
增加以下内容,所有虚拟机都要增加以下内容
10.10.11.191 master |
其中127.0.0.1 oldhostname
删掉
更改IP地址、网关
【注】此处以master
主机为例,其他主机根据上述拓扑图做相应更改
1.更改IP
利用ifconfig
命令查看网卡名称,然后更改设置,本虚拟机网卡为enp0s3
sudo ifconfig enp0s3 10.10.11.191/24 |
【注】此种更改IP的方法,系统重启后需要重新配置
2.更改网关
sudo route add default gw 10.10.11.1 |
关闭防火墙
sudo ufw disable |
【注】此步骤后即可利用VirtualBox
克隆功能复制出其他从机
连接测试
使用ping
命令测试是否能够连接
ping hostname |
配置SSH
安装ssh
sudo apt-get install ssh |
查看已安装的ssh
dpkg --list|grep ssh |
如果缺少openssh-server
,需要安装
sudo apt-get install openssh-server |
配置ssh
下述步骤在不同的主机上进行,请注意区分
master
机操作
生成
master
机的一对公钥和私钥ssh-keygen -t rsa -P ''
进入
.ssh
目录查看公钥和私钥,id_rsa
和id_rsa.pub
cd .ssh
ls将公钥加入到已认证的key中
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
登录本机
ssh localhost
如果出现The authenticity of host 'localhost (127.0.0.1)' can't be established.
,输入yes
即可。
其他从机操作
- 将
master
主机上的id_rsa.pub
复制到node1
从机上。同理node2
进行类似操作
scp ~/.ssh/id_rsa.pub t@node1:~/ |
然后再在从机执行
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys |
若遇到/home/t/.ssh/node1_rsa.pub: No such file or directory
,则手动通过共享文件夹复制到其他从机相应位置。
若从机cd .ssh
遇到No such file or directory
,则手工创建.ssh
文件夹。
- 在
/home/t
图形化界面按Ctrl+H
显示隐藏文件夹, - 若已经存在
.ssh
文件夹,则删除suso rm -r /home/t/.ssh
。这里的/home/t
是用户目录,t
是用户名,其他用户名则需要做相应更改。 - 若没有
.ssh
文件夹,则创建sudo mkdir /home/t/.ssh
- 更改权限
sudo chmod a+w /home/t/.ssh
- 通过共享文件夹把
master
中的id_rsa.pub
复制到/home/t/
中
将
master
主机上的密钥加入到认证中cat ~/id_rsa.pub >> ~/.ssh/authorized_keys
在
master
主机上验证能否正常登陆ssh node1
出现以下则表示登陆成功
启动集群
格式化namenode
在主机master
运行
hadoop namenode -format |
若出现has been successfully formatted
和Exiting with status 0
表示格式化成功
若出现hadoop:Cannot create directory /home/t/hadoop/name/current
错误即文件夹权限不足
sudo chmod -R a+w /home/t/hadoop/name/current |
启动集群
start-all.sh |
启动完毕后,执行命令
jps |
若master
主机看到四个开启的进程代表启动成功
若从机上看到启动进程
【问题解释】为什么没有jobtracker
和tasktracker
停止集群
stop-all.sh |
查看运行状态
查看Namenode
状况
通过Web界面查看NameNode
运行状况,默认为http://localhost:50070
查看ResourceManager
状况
http://localhost:8088
运行测试程序
向hadoop集群系统提交第一个mapreduce任务,统计词频
进入本地hadoop目录.此处是
/usr/hadoop-2.7.5
cd /usr/hadoop-2.7.5
在虚拟分布式文件系统上创建一个目录
/data/input
hdfs dfs -mkdir -p /data/input
将当前目录下的
README.txt
复制到虚拟分布式文件系统中hdfs dfs -put README.txt /data/input
查看虚拟分布式文件系统中是否有复制上去的文件
hdfs dfs -ls /data/input
向Hadoop提交单词统计任务
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.5.jar wordcount /data/input /data/output/result
查看结果
hdfs dfs -cat /data/output/result/part-r-00000