【分布式编程】一——基于VirtualBox的Hadoop完全分布式环境搭建
2018-02-07 11:12
555 查看
系统架构
虚拟机环境:VirtualBoxLinux系统:Ubuntu 16.04 LTS
工具包
JDK1.8
Hadoop 2.7.5
拓扑结构:如下
操作步骤
【注】本步骤以Master为例,其他虚拟机可以使用
克隆功能复制,然后更改
安装常用软件
安装vim
sudo apt-get install vim
安装工具包
设置共享文件夹
安装VirtualBox增强功能包,
Ubuntu系统直接点击
设备->安装增强功能
剩余步骤看教程
安装JDK
下载JDK-8u151剩余步骤看教程
创建用户组
创建用户组
每个主机都需要加入到同一用户组。此处创建名为hadoop用户组
sudo addgroup hadoop
查看当前用户
who
当前用户为
t
添加当前用户到用户组
sudo adduser t hadoop #sudo adduser user group
查看归属用户组
groups t #group user
安装Hadoop
下载Hadoop
点击链接下载解压Hadoop
将文件复制到/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.name</name> <value>hdfs://master:9000</value> <final>true</final> </property> <property> <name>hadoop.tmp.dir</name> <value>/home/t/hadoop/tmp</value> <description>A base for other temporary directories.</description> </property> </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> <property> <name>dfs.name.dir</name> <value>/home/t/hadoop/tmp/dfs/name</value> <final>true</final> </property> <property> <name>dfs.data.dir</name> <value>/home/t/hadoop/tmp/dfs/data</value> <final>true</final> </property> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.permissions</name> <value>false</value> </property> </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> <property> <name>mapred.job.tracker</name> <value>master:9001</value> </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删掉
更改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 sudo apt-get remove iptables
【注】此步骤后即可利用
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
相关文章推荐
- 基于hadoop+nutch+solr的搜索引擎环境搭载<一>hadoop完全分布式环境搭建
- 基于vmware workstations 10 、centos6.4和hadoop-2.7.1的hadoop完全分布式集群的开发环境搭建
- 【分布式编程】三——基于VirtualBox的Spark完全分布式环境
- 基于WindowsXP环境的Hadoop完全分布式环境的搭建
- Hadoop2.8.2+Spark2.1.2 完全分布式环境 搭建全过程
- hadoop 2.5.2 完全分布式集群环境搭建 (1)
- hadoop 2.5.2 完全分布式集群环境搭建 (2)
- Hadoop2.7.3+Spark2.1.0 完全分布式环境 搭建全过程
- Hadoop2.7.3+Spark2.1.0 完全分布式环境 搭建全过程
- hadoop完全分布式环境搭建
- VirtualBox环境下基于多台ubuntu虚拟机的Hadoop分布式计算环境搭建
- Hadoop2.7.2 Centos 完全分布式集群环境搭建 (1) - 基础环境准备-1
- Hadoop-2.3.0-cdh5.0.1完全分布式环境搭建(NameNode,ResourceManager HA)
- hadoop2.6完全分布式环境搭建(上)
- Hadoop完全分布式环境搭建
- hadoop 2.5.2 完全分布式集群环境搭建 (3)
- [大数据]连载No3之Hadoop完全分布式环境搭建
- hadoop+hbase+zookeeper完全分布式环境搭建
- 从零开始搭建hadoop分布式集群环境:(五)hadoop完全分布式集群环境配置