写在前面:在进行部署的过程中参考了许多文章,总体按照官方网站给出的单节点下的伪分布式分布文档进行的部署与结果测试,原文地址:http://hadoop.apache.org/docs/r2.8.4/hadoop-project-dist/hadoop-common/SingleCluster.html#Pseudo-Distributed_Operation
安装环境及软件版本说明:VMware Workstation 14 Pro, Ubuntu 16.04 LTS, Hadoop-2.8.4, Openjdk-8-jdk, Openjdk-8-jre
1、环境配置
(1)、linux安装
使用vmware创建虚拟环境进行安装。
可以在Ubuntu官网下载有关版本的安装镜像:https://www.ubuntu.com/download/alternative-downloads
在官方网站下载并安装VMware,安装完成后新建虚拟机,默认选择典型类型安装
第二步选择Ubuntu的镜像文件位置,
第三步输入账户有关信息,
第四步配置虚拟机名称和位置大小、最后在完成前进行自定义硬件,点击处理器,打开所有虚拟化引擎设置。
点击完成后,虚拟机自动启动并开始安装Ubuntu,完成后重启登入系统。
(2)、必要的软件和环境配置
在任意位置点击鼠标右键打开terminal,输入以下命令安装和更新有关软件
更新apt:
sudo apt-get update
安装vim:
sudo apt-get vim
安装jdk:
sudo apt-get install openjdk-8-jdk
安装ssh:
sudo apt-get install openssh-server
测试登录本机:
ssh localhost
jdk在Ubuntu上的默认安装路径是/usr/lib/jvm
配置JAVA_HOME环境变量
vim ~/.bashrc
在文件末尾添加JAVA_HOME 路径:
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
让配置生效:
source ~/.bashrc
测试是否成功:
java –version
$JAVA_HOME/bin/java –version
正常配置时java –version 和$JAVA_HOME –version执行完成后输出相同的系统信息。
2、安装Hadoop2.8.4
(1)Hadoop下载
可在http://www.apache.org/dyn/closer.cgi/hadoop/common/找到有关的下载地址,一般选择对应版本文件夹下的hadoop 2.8.4.tar.gz文件,文件校验步骤暂且略过。
(2)安装步骤
这里默认将hadoop解压到/usr/local目录中。输入以下指令进行有关操作:
sudo tar –zxvf ~/download/hadoop-2.8.4.tar.gz –C /usr/local #解压文件至/usr/local中
cd /usr/local
sudo mv ./hadoop-2.8.4/ ./hadoop #将文件夹更名为hadoop
sudo chown –R sul ./hadoop #修改文件权限,sul为当前用户名
解压后即可使用Hadoop,输入:
cd /usr/local/hadoop #切换至解压目录(即hadoop根目录)
./bin/hadoop version #完成后即可查看hadoop的版本信息
3、伪分布式配置
进行伪分布式分布需要对hadoop的配置文件进行修改,需要修改的文件有2个文件:
core-site.xml和htfs-site.xml。存放路径为/usr/local/Hadoop/etc/hadoop,配置文件为xml格式,配置以porperty的name和value标签实现。
使用vim 指令修改core-site.xm文件:
vim /usr/local/hadoop/etc/hadoop/core-site.xml
core-site.xml修改如下:
<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/tmp</value>
<description>Abase for other temporarydirectories.</description>
</property>
<property>
<name>fs.defaultFS</name>
<value>hdfs://localhost:9000</value>
</property>
</configuration>
使用vim指令修改hdfs-sits.xml文件:
vim /usr/local/hadoop/etc/hadoop/hdfs-site.xml
hdfs-site.xml修改如下:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/name</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:/usr/local/hadoop/tmp/dfs/data</value>
</property>
</configuration>
两个配置文件内容将hadoop的缓冲文件夹和dfs的数据存放文件位置目录指定到了我们所给的位置,伪分布式虽然只需要配置 fs.defaultFS 和 dfs.replication 就可以运行(官方教程如此),不过若没有配置 hadoop.tmp.dir 参数,则默认使用的临时目录为 /tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行 format 才行。所以我们进行了设置,同时也指定 dfs.namenode.name.dir 和 dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。
配置完成后,执行 NameNode 的格式化:
./bin/hdfs namenode -format
成功的话,会看到 “successfully formatted” 和 “Exitting with status 0” 的提示,若为“Exitting with status 1” 则是出错。
如果在这里出现错误Error:JAVA_HOME is not set and could net be found.说明之前配置的java环境变量存在问题,解决方案有两种:
第一种方案:重新进行环境变量的配置;第二种方案是:修改hadoop-env.sh中java的配置路径。
第二种方案:hadoop-env.sh文件存放在./ etc/hadoop,通过指令:
vim /usr/local/hadoop/etc/hadoop/hadoop-env.sh
打开文件,配置启动Java的代码段,修改JAVA_HOME的地址为对应jdk的安装目录
例如:
保存退出后即可解决路径错误问题。
然后开启NameNode和DataNode进程。在terminal中输入指令:
./sbin/start-dfs.sh
若出现启动ssh提示,输入yes即可。若出现要输入用户名密码,输入密码即可。
启动完成后,可以通过命令 jps 来判断是否成功启动,若成功启动则会列出如下进程: “NameNode”、”DataNode”和“SecondaryNameNode”(如果 SecondaryNameNode 没有启动,请运行sbin/stop-dfs.sh 关闭进程,然后再次尝试启动尝试)。如果没有 NameNode 或 DataNode ,那就是配置不成功,请仔细检查之前步骤,或通过查看启动日志排查原因。
成功启动后,可以访问 Web 界面 http://localhost:50070 查看 NameNode 和 Datanode 信息,还可以在线查看 HDFS 中的文件。
至此hadoop伪分布式配置基本完成,对于YARN 是从 MapReduce 中分离出来的,负责资源管理与任务调度。YARN运行于 MapReduce 之上,提供了高可用性、高扩展性,因此伪分布式下YARN可以不启动,对程序无影响。
4、使用样例进行测试
在./share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.4.jar中保存有已写好的各种样例,grep例子是通过正则表达式在input中的文件里查找有关的字符串,利用此例子,借用hadoop的配置文件在其中查找开头为dfs的串。此处的正则表达式为’dfs[a-z.]+’.
因为伪分布式下的输入读取来自HDFS,因此我们需要在HDFS先创建我们的工作目录,
通过指令:
./bin/hdfs dfs -mkdir /user/sul #sul是当前登陆系统使用的用户名,可以自行修改
创建好工作目录后,在工作目录下创建我们的输入文件夹,并将文件输入文件复制到文件夹内。指令如下:
./bin/hdfs dfs -mkdir /user/sul/input #创建input文件夹
./bin/hdfs dfs -put ./etc/hadoop/*.xml /user/sul/input #复制文件
./bin/hdfs dfs -ls /user/sul/input #查看input文件夹下复制过来的文件
接着开始执行grep,指令:
./bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.8.4.jargrep input output 'dfs[a-z.]+'
执行结束后,没有出现Error或者其他错误即表示运行正常,则可将实验结果拷贝到本地的文件系统中保存。
./bin/hdfsdfs -get output output
通过cat指令可以查看到查看结果:
cat output/*
最后若要关闭hadoop则可以使用指令停止:
./sbin/stop-dfs.sh
注:
1、停止hadoop的指令是:
./sbin/stop-dfs.sh
2、启动指令为:(第一次启动前格式化nameNode后无需再次格式化)
./sbin/start-dfs.sh
3、相对路径与绝对路径的区别
注意命令中的相对路径与绝对路径,所有指令中出现的./bin/...等包含 ./ 的路径,均为相对路径,以 /usr/local/hadoop 为当前目录。例如在 /usr/local/hadoop 目录中执行 ./bin/hadoop version 等同于执行 /usr/local/hadoop/bin/hadoop version。
4、vim的简单使用
默认指令格式:vim[文件]
进入编辑器后,按下i,进入insert文本编辑模式即可开始编写文件。
保存文件:按下Esc,输入:wq,按下Enter执行。
不保存退出:按下Esc,输入:q!,按下Enter执行。
例如:编辑helloword.txt文档
vim helloword.txt
按下i进入插入模式,进行编辑。
按下Esc,输入:wq保存退出。
使用cat指令查看文件:
cat helloworld.txt
写在最后:本文内容是在学习大数据过程中积累一点点经验,提供给大家学习与分享,不涉及任何商业成分,个人能力有限,文章内容或有纰漏与错误,部署过程中出现问题欢迎在评论区讨论。