【注】本步骤以Master
为例,其他虚拟机可以使用克隆
功能复制,然后更改
vim
sudo apt-get install vim
VirtualBox增强功能包
,Ubuntu
系统直接点击设备->安装增强功能
每个主机都需要加入到同一用户组。此处创建名为hadoop
用户组
sudo addgroup hadoop
who
当前用户为t
sudo adduser t hadoop #sudo adduser user group
groups t #group user
点击链接下载
将文件复制到/Downloads/
文件夹下进行解压
cd Downloads/
tar -zxvf hadoop-2.7.5.tar.gz
将解压后的文件夹移动到/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/
sudo vim hadoop-env.sh
添加java安装路径
core-site.xml
<configuration>
<property>
<name>fs.default.namename>
<value>hdfs://master:9000value>
<final>truefinal>
property>
<property>
<name>hadoop.tmp.dirname>
<value>/home/t/hadoop/tmpvalue>
<description>A base for other temporary directories.description>
property>
configuration>
【说明】
<name>fs.default.namename>
此参数设置NameNode
的URI,此处设master
主机为NameNode
<name>hadoop.tmp.dirname>
此参数设置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>
<property>
<name>dfs.name.dirname>
<value>/home/t/hadoop/tmp/dfs/namevalue>
<final>truefinal>
property>
<property>
<name>dfs.data.dirname>
<value>/home/t/hadoop/tmp/dfs/datavalue>
<final>truefinal>
property>
<property>
<name>dfs.replicationname>
<value>2value>
property>
<property>
<name>dfs.permissionsname>
<value>falsevalue>
property>
configuration>
【说明】
<name>dfs.name.dirname>
dfs.name.dir
存储永久性的元数据的目录列表。这个目录会创建在master
主机上。
<name>dfs.data.dirname>
dfs.data.dir
存放数据块的目录列表,这个目录在node1
和node2
上创建
<name>dfs.replicationname>
dfs.replication
设置文件副本数,此处有两个从机,设置副本数为2
mapred-site.xml
先创建mapred-site.xml
,进入到~/etc/hadoop/
文件夹下
cp mapred-site.xml.template mapred-site.xml
<configuration>
<property>
<name>mapred.job.trackername>
<value>master:9001value>
property>
configuration>
slaves
把其他从机的主机名添加,有几个就添加几个,多添加会无法运行
sudo vim /etc/profile
将环境变量添加即可
export HADOOP_HOME=/usr/hadoop-2.7.5
export PATH=$PATH:$HADOOP_HOME/sbin
export PATH=$PATH:$HADOOP_HOME/bin
更新生效
source /etc/profile
运行是否配置环境变量成功
hadoop version
【注】此步骤完成之后,可以克隆两个虚拟机分别命名为node1
,node2
【注】所有虚拟机都需要进行此步操作
点击控制->设置->网络
,连接方式选择桥接网卡
,然后重启虚拟机
Hostname
sudo vim /etc/hostname
【注】其他虚拟机修改其Hostname
为相应的名称
以master
为例,直接改为
hosts
文件sudo vim /etc/hosts
增加以下内容,所有虚拟机都要增加以下内容
10.10.11.191 master
10.10.11.192 node1
10.10.11.193 node2
其中127.0.0.1 oldhostname
删掉
【注】此处以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
sudo apt-get remove iptables
【注】此步骤后即可利用VirtualBox
克隆功能复制出其他从机
使用ping
命令测试是否能够连接
ping hostname
sudo apt-get install ssh
dpkg --list|grep ssh
如果缺少openssh-server
,需要安装
sudo apt-get install openssh-server
下述步骤在不同的主机上进行,请注意区分
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