任务三、安装Hadoop单机模式和伪分布式
安装Hadoop
1、基本概念
- Hadoop是一个分布式文件系统的基础架构,用户可以利用集群进行高速运算和存储
- Hadoop实现了一个分布式文件系统(Hadoop Distributed File System),简称HDFS。HDFS有高容错性的特点,并且设计用来部署在低廉的(low-cost)硬件上;而且它提供高吞吐量(high throughput)来访问应用程序的数据,适合那些有着超大数据集(large data set)的应用程序。HDFS放宽了(relax)POSIX的要求,可以以流的形式访问(streaming access)文件系统中的数据。
Hadoop的框架最核心的设计就是:HDFS和MapReduce。HDFS为海量的数据提供了存储,则MapReduce为海量的数据提供了计算
- Hdfs主要模块:NameNode、DataNodeHDFS
- 主要模块及运行原理:
(1)NameNode:
功能:是整个文件系统的管理节点。维护整个文件系统的文件目录树,文件/目录的元数据和每个文件对应的数据块列表。接收用户的请求
(2)DataNode:
功能:是HA(高可用性)的一个解决方案,是备用镜像,但不支持热备
Hadoop的三种模式:
(1)单机模式Local或Standalone Mode
默认情况下,Hadoop即处于该模式,用于开发和调试,使用本地文件系统,而不是分布式文件系统,Hadoop不会启动NameNode、DataNode、JobTracker、TaskTracker等守护进程。用于对MapReduce程序的逻辑进行调试,确保程序的正确(2)伪分布式模式(Pseudo-Distrubuted Mode)
模拟一个小规模的集群,在一台主机模拟多主机。
Hadoop启动NameNode、DataNode、JobTracker、TaskTracker这些守护进 程都在同一台机器上运行,是相互独立的Java进程
在这种模式下,Hadoop使用的是分布式文件系统,各个作业也是由JobTraker服务,来管理的独立进程。在单机模式之上增加了代码调试功能,允许检查内存使用情况,HDFS输入输出,类似于完全分布式模式
(3)完全分布式模式Hadoop守护进程运行在一个集群上,hadoop的守护进程namenode,datanode,jobTracker,TaskTracker运行在多台主机上,也就是一个集群不同机器上
2、安装过程
明确概念:Hadoop的伪分布式模式需要在单机模式之上进行
-
安装Hadoop的单击模式
下载Hadoop对应的安装包
链接:https://pan.baidu.com/s/1Se4tmyneFxc7AKnbTv1D9A
提取码:2yqn -
在虚拟机下创建目录存放Hadoop的安装包:
mkdire /usr/java/hadoop
并通过xftp将安装包放入到目录下
解压压缩包:
tar -xzvf hadoop-2.10.0.tar
-
配置环境变量
vim /etc/profile
在文件最后添加:
export HADOOP_HOME=/usr/java/hadoop/hadoop-2.10.0
export PATH=HADOOP_HOME/bin问题一: 关于配置文件生效问题:
之前有遇到过配置文件在修改之后只是临时生效的问题,因为我们是直接实由的source /etc/profile 使用这个命令的结果是刷新配置文件,可以在一定的时间内使其生效,而如果想要配置文件永久生效就需要将虚拟机重启,通过命令:
reboot
-
到此为止我们就完成Hadoop的单机模式的安装,为了验证这里可输入命令
hadoop
如上图显示,则说明我们的单击模式安装成功
-
伪分布式模式安装
1)查看有没有安装openssh
输入命令
rpm -qa openssh
如果显示
则说明已经安装了openssh
如果没有显示安装则通过yum命令进行安装
yum install openssh
2)修改若干配置文件
-
问题二: 在这里修改配置文件的property标签必须放到configuration标签下
-
在hadoop安装根目录下创建temp文件夹用于存放临时文件
-
转到hadoop安装根目录/etc/hadoop目录下,修改若干配置文件
-
vim core-site.xml
在configuration标签下添加:
-
将第二个property标签中的value值设置为刚刚创建临时文件夹temp的绝对路径
vim hdfs-site.xml
在configuration标签下增加为
找到mapred-site.xml.template文件把文件名修改为mapred-site.xml
修改文件名的命令为:
mv mapred-site.xml.template mapred-site.xml
编辑它:
vim mapred-site.xml
在configuration中增加为:
修改hadoop-env.sh中JAVA_HOME路径的问题:
vim hadoop-env.sh
修改为:
export JAVA_HOEM = “JDK的根目录“
自此所有的配置文件就都已经配置结束了。
-
配置hadoop免密登录,因为在之后的format操作中要将多次输入密码,非常麻烦,这里设置免密登录
输入命令:
ssh-****** -t rsa (一路回车)
转到~/.ssh目录下
cd ~/.ssh
输入命令:
cat id_rsa.pub >> authorized_keys
-
格式化hadoop
转到hadoop的配置文件夹下
cd /usr/java/hadoop/etc/hadoop
输入命令:
hadoop namenode -format
在这个过程中,会报出之前在修改配置文件过程中出现的错误,只有当出现”has been successfully formatted“才表示配置成功
如图所示:
-
转到cd /usr/java/hadoop/sbin目录下
cd /usr/java/hadoop/sbin
输入命令
./start-all.sh
然后遇到输入一律yes,则hadoop成功启动
输入jps
如果显示出六个输出结果,则说明我们的伪分布式搭建成功
-
下一步我们就可以访问HDFS的web界面
在浏览器输入:
localhost:50070/
看到界面出现:
则说明我们的分布式完全配置成功了
3、HDFS的命令操作
查询前几行样本数据:
hdfs dfs -cat /project/test/test.txt | head -17
查询后5行数据:
hdfs dfs -cat /project/test/test.txt | tail -5
随机返回指定行数的样本:
hdfs dfs -cat /project/test/test.txt | shuf -n 5
查看文本的行数:
hdfs dfs -cat /project/test/test.txt | wc -l
查询第五行之后的文件内容:
hdfs dfs -cat /project/test/test.txt | tail -n +5
查询过滤字段num:
hdfs dfs -cat /project/test/test.txt | grep num
查看文件大小:
hdfs dfs -du /project/test/test.txt
hdfs dfs -du /project/test/*
显示文件夹下面文件的数量:
hdfs dfs -count /project/test/
创建目录dir1和dir2:
hdfs dfs -mkdir -p /project/test/dir1 /project/test/dir2
显示文件夹test下的目录:
hdfs dfs -ls /project/test/
递归的显示test下的目录:
hdfs dfs -ls -R /project/test/或hdfs dfs -lsr /project/test/
将本地文件上传至hdfs目标路径:
hdfs dfs -put /home/bb/test1.txt /project/test/
将文件从目标路径拷贝到本地:
hdfs dfs -get /project/test/test1 /home/bb/
将文件或目录复制到目标路径:
hdfs dfs -cp 源路径 目标路径
删除文件或目录:
hdfs dfs -rm 路径
删除文件夹及文件夹下的内容:
hdfs dfs -rm -r 路径
跳过垃圾桶删除:
hdfs dfs -rm -r -skipTrash 路径