环境信息
1. 硬件:
内存ddr3 4G及以上的x86架构主机一部
系统环境:windows
2. 软件:
virtualbox
3. 其他: 无
步骤与方法
1. 安装Hadoop并进行集群搭建
1) 设置集群前的准备工作
设置网络
设置两个网卡:
网卡一,“仅主机网络”,连接主从节点与主机。选中虚拟机,点击设置。进入虚拟机设置界面,点击网络,选择网卡1,选择连接方式——仅主机网络。
网卡二,“桥接连接”,连接主机和主节点、从节点与外部网络。选择网卡2,勾选启用网络连接,选择连接方式——桥接连接,点击高级,在下拉内容的选择混杂模式——全部允许。完成点击ok。
修改配置文件,设置服务器master,重命名虚拟机。
进入设置,选择常规,选择基本,在名称中输入主节点名称,点击ok
修改IP地址(修改后不能上网)。
(1) 使用ifconfig命令查看IP端口名称与当前IP地址,掩码网关,广播地址。
(2) 在终端输入命令,编写文件(#后面的文字是注释,需要去掉)。
sudo gedit /etc/netplan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:#网络
version: 2#版本
renderer: NetworkManager#渲染器
ethernets:#以太网
enp0s3:
addresses: [192.168.1.10/24]
dhcp4: no
dhcp6: no
gateway4: 192.168.1.1#网关
(3) 输入命令,使刚才的配置生效。
sudo netplan apply
(4) 再使用ifconfig命令查看IP地址是否修改成功。
Ifconfig
修改主机名
(1) 使用hostname命令查看主机名。
(2) 修改主机名输入命令,将文件内容修改为主机名(master)。
sudo gedit /etc/hostname
(3) 需要重启生效。
配置.xml文件
直接在home/linlin/hadoop/hadoop—/etc/hadoop/路径下打开终端。
删除datanode存储目录,将IP地址改为主机名。
core-site.xml
sudo gedit core-site.xml将IP地址改为主机名。
yarn-site.xml将IP地址改为主机名。
sudo gedit yarn-site.xml
mapred-site.xml
sudo gedit mapred-site.xml修改内容(设置监控Map与Reduce程序的JobTracker任务分配情况,以及TaskTracker任务运行情况)。
配置节点文件
修改配置文件/etc/hosts,修改主节点、增加从节点的IP地址和主机名。
sudo gedit /etc/hosts
修改masters文件
注意使用了相对路径(原本不存在这个文件,参考文档:Apache Hadoop 3.2.3 – Hadoop Cluster Setup,通过root用户创建)。
sudo gedit ./hadoop/hadoop—/etc/hadoop/masters
添加主节点主机名
修改workers文件
hadoop3使用workers文件列出从节点,hadoop2使用slaves文件。
sudo gedit ./hadoop/hadoop—/etc/hadoop/workers
防止启动出错
将/hadoop—路径下的dataNode_1_dir文件夹和logs文件夹删除(选中按delete)。
建议将hadoop—/hadoop_data/hdfs/datanode和hadoop—/hadoop_data/hdfs/namenode路径下的current文件夹删除。否则可能缺少DataNode进程。
复制虚拟机
将服务器master复制出slave1,slave2,省略操作。复制虚拟机之前,关闭虚拟机。
选中虚拟机,右键复制,进入新虚拟机名称和保存路径界面,输入新虚拟机名称,在下拉框Mac地址设定,选择包含所有网卡的Mac地址,单击下一步。进入副本类型界面,默认选中完全复制,单击复制。弹出进度条,等待复制完成,virtualbox出现新的虚拟机(同样复制下一个虚拟机)。
2) 设置服务器
与服务器master操作相同(同样方式操作slave1,slave2)。
修改IP地址
修改addresses分别为192.168.1.1(192.168.1.2)。
(1) 使用ifconfig命令查看IP端口名称与当前IP地址,掩码网关,广播地址。
(2) 在终端输入命令,编写文件(#后面的文字是注释,需要去掉)。
sudo gedit /etc/netplan/01-network-manager-all.yaml
(3) 输入命令,使刚才的配置生效。
sudo netplan apply
(4) 再使用ifconfig命令查看IP地址是否修改成功。
修改主机名
修改slave1(slave2)。
(1) 使用hostname命令查看主机名。
(2) 修改主机名输入命令,将文件内容修改为主机名。
sudo gedit /etc/hostname
(3) 需要重启生效。
配置hdfs-site.xml
直接在主目录下输入命令,打开文件:
sudo gedit ./hadoop/hadoop—/etc/hadoop/hdfs-site.xml
将之前保留的namenode存储目录替换为datanode存储目录。
ssh无密码连接登录
(1) 启动全部服务器master,slave1,slave2。
(2) 在master终端输入连接命令,提示输入yes,发现命令提示符会发生变化,即成功连接。
ssh slave1
ssh slave2
(3) 输入命令关闭ssh,发现命令提示符变回,即中断连接。
Exit
格式化文件系统
部署HDFS文件系统,只需要在master上格式化,输入命令,弹出提示输入y,出现successfully则成功格式化。
hdfs namenode -format
3) 启动和关闭Hadoop集群
启动hadoop命令(分为启动HDFS命令start.dfs.sh和启动YARN命令start.yarn.sh)(首次启动需要格式化,下次启动无需格式化)。
start-all.sh
检验hadoop的全部守护进程(需要分别用ssh连接节点服务器,查看各个从节点的守护进程ssh slave1/ssh slave2、exit)。
jps
master出现守护进程:NameNode;SecondaryNameNode;ResourceManger;jps
slave1出现守护进程:NodeManager;DataNode;jps
slave2出现守护进程:NodeManager;DataNode;jps
关闭hadoop命令(分为关闭HDFS命令stop.dfs.sh和关闭YARN命令stop.yarn.sh)。
stop-all.sh
4) 查看Hadoop集群的基本信息
进入网址https://master:50070查看HDFS监控页面。
进入网址https://master:8088查看YARN监控页面。
5) 在Hadoop集群中运行程序
运行自带的mapreduce程序,计算圆周率的java程序包(jar包——计算圆周率)
位置:hadoop—/share/hadoop/mapreduce
文件名:hadoop-mapreduce-examples—.jar
在终端输入命令,其中pi是类名,第一个10表示map次数,第二个10表示随机生成点的次数
hadoop jar ./hadoop—/share/hadoop/mapreduce/hadoop-mapreduce-examples—.jar pi 10 10
最后两行会显示计算时间、计算结果
总结验证hadoop启动成功的三种方式:jps查看进程;web页面验证;执行MapReduce程序。
2. HDFS常用命令使用
- 创建与查看HDFS目录
- 本地计算机和HDFS之间的文件复制
- 复制与删除HDFS文件
- 查看HDFS文件内容
Linux本机和HDFS之间文件传输
即虚拟机的linux系统的文件与hadoop的HDFS分布式系统的文件之间的文件共享
上传文件(linux—>hdfs)
hadoop fs -copyFromLocal [linux] [hdfs]
hadoop fs -put [linux] [hdfs]
可以进行文件重命名。
hdfs没有写文件名,默认为原来的命名。
linux上传的文件必须存在。
hdfs已经存在文件,不会上传,使用下面选项,强制上传。
-f选项,强制复制(存在则替换文件)。
可以上传多个文件。
可以上传目录。
-put命令,还可以接收输入stdin。
将指定内容显示在屏幕上:echo [内容]
通过"|"(管道符pipe)将屏幕的内容传递存入文件(文件不能已经存在)
echo abc | hadoop fs -put - /test/echoin.txt
ls ./hadoop—/etc/hadoop | hadoop fs -put - /test/hadoopetc.txt
文件下载(hdfs—>linux)
hadoop fs -copyToLocal [hdfs] [linux]
hadoop fs -get [hdfs] [linux]
可以进行文件重命名。
hdfs下载的文件必须存在。
可以下载目录。
出现的问题及解决方法
1、网络配置问题
出现问题:编辑/etc/network/interfaces文件信息,再执行下面命令使配置生效,结果找不到命令。
linlin@master:~$ sudo /etc/init.d/networking restart
sudo: /etc/init.d/networking:找不到命令。
原因说明:/etc/network路径下原本并没有interfaces文件,/etc/netplan路径下有*.yaml文件。Ubuntu20.04的配置网络不是修改interfaces文件,而是需要修改*.yaml文件。
解决步骤: 使用命令ifconfig查看IP端口名称,当前IP地址,掩码,广播地址;在终端输入命令,编写文件(#后面的文字是注释,需要去掉)。
sudo gedit /etc/netplan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:#网络
version: 2#版本
renderer: NetworkManager#渲染器
ethernets:#以太网
enp0s3:
addresses: [192.168.1.10/24]
dhcp4: no
dhcp6: no
gateway4: 192.168.1.1#网关
nameservers:#域名服务器
addresses: [192.168.1.1,114.114.114.114]
输入命令,使刚才的配置生效:sudo netplan apply。
再次输入命令,查看修改后的IP地址(对比下面的红色标记),修改成功!
2、重启后,网卡消失不见
问题说明:网络配置中修改了interfaces文件,结果端口信息都看不到了(本来有enp0s3端口)
解决方法:
在/etc/network的路径进入终端输入命令,删除文件(建议):rm interfaces。或者清空修改的interfaces文件:sudo gedit /etc/network/interfaces。
输入下行的命令,使配置生效(sudo /etc/init.d/networking restart这条命令无效):sudo /etc/init.d/network-manager restart。
再输入命令ifconfig,就可以看到网卡回来了(下图中红色标记为输入的命令)。
3、虚拟机不能上网
原因说明:当使用网络地址转换时,为10.0.2.15,公网下可以上网;当使用仅主机网络时,为192.168.56.101,为私人网段,不能上网。修改IP地址为192.168.1.10,依然为私人网段,不能上网。
解决方法:虚拟机未启动的状态下,设置网卡一连接方式为网络地址转换(NAT),其它网卡取消勾选启用网络连接,点击ok。
4、路径错误
出现问题:编写masters文件,出现找不到文件,检查输入位置是否正确并重试。
原因说明:混淆了绝对路径和相对路径,在主目录/home/linlin下打开终端,如下图。
第一条绝对路径正确,根目录/下/etc/hosts文件确实存在。
第二条绝对路径错误,根目录/下不存在/hadoop…/masters文件。
第一条相对路径正确,主目录/home/linlin存在/hadoop…/masters文件。
第一条相对路径正确,主目录/home/linlin存在/hadoop…/masters文件,省略了./。
4、slave缺少datanode进程
出现问题:配置好所有节点后,启动hadoop,发现其中slave服务器缺少datanode进程。查看web页面,hdfs页面LiveNode节点数为0,yarn页面正常可以查看node信息。
原因说明:之前配置hadoop时,创建和产生的临时文件:
file:///home/linlin/hadoop/hadoop-3.2.3/dataNode_1_dir
file:///home/linlin/hadoop/hadoop-3.2.3/logs
file:///home/linlin/hadoop/hadoop-3.2.3/hadoop_data/hdfs/datanode
file:///home/linlin/hadoop/hadoop-3.2.3/hadoop_data/hdfs/namenode
这些路径下的/dfs/namesecondary/current/VERSION文件或者/current/VERSION文件与进程的节点存储目录有关。正常的集群应该是:master上只有namenode临时文件,slave上只有datanode临时文件。两个目录的临时文件信息应该通过什么关联,对比文件发现:
格式化namenode文件前后namenode文件中clusterID发生变化,所以与clusterID有关,与layoutVersion这一项无关。
解决方法一:格式化namenode,将master服务器的namenode路径下的临时文件/current/VERSION的clusterID与slave服务器的datenode路径下临时文件/current/VERSION的clusterID改为一致。启动hadoop。
解决方法二:删除dataNode_1_dir和logs文件夹,删除节点存储目录的current文件夹,格式化namenode,启动hadoop。
正常的hadoop进程:
结果、结果分析
1、 安装Hadoop完成
2、集群搭建成功
3、练习了HDFS常用命令
实验成功完成。
心得体会
随着计算机软硬件技术的飞速发展,计算机的功能越来越强大,使用的范围也越来越广泛,计算机进入家庭已经成为一种世界性的潮流。学习Hadoop大数据处理与分析让我们快速、全面地了解虚拟机的各种知识,加强了我们的实践动手能力和进一步了解理论知识,通过自己动手搭建集群环境,既可以增长知识,又增添无穷的乐趣。虽然时间不是很长,但是我受益匪浅,这次实验,让我们对虚拟机有了更深的了解。
一个完美的集群是很需要花时间和心思研究它的每一个细节的,在今后生活和学习过程中,继续坚持对问题的观察和研究,并不断把研究所得用以指导自己的行为实践,以争取自己思想的上进和人格的完善,将来要在有用的基础上做一个出色的人。