本文基于CenOs7操作系统,搭建了Hadoop开发环境
文章目录
1.创建Hadoop用户
(1)创建hadoop用户
(2)为hadoop用户增加管理员权限
- 【注】以下软件安装需保证系统处于联网状态
2.安装SSH、配置SSH无密码登陆
(1)检验是否安装SSH
集群、单节点模式都需要用到 SSH 登陆,一般情况下,CentOS 默认已安装了SSH client、SSH server,因此打开终端执行如下命令进行检验即可:
如上图所示,CentOS7已经默认装好了SSH client、SSH server。
(2)检验SSH是否可用
(3)设置SSH无密码登陆
1.利用ssh-keygen生成密钥
2.将密钥加入到授权中
3.修改文件权限
4.验证
如上图所示,设置过后,无需输入密码就可以直接登陆了。
3.安装Java环境
(1)安装JDK
安装成功:
注:通过上述命令安装OpenJDK,默认安装位置为/usr/lib/jvm/java-1.8.0-openjdk
(2)配置环境变量
(3)令环境变量生效
(4)检验是否设置正确
如果设置正确的话,$JAVA_HOME/bin/java -version 会输出 java 的版本信息,且和java -version 的输出结果一样,如下图所示:
4.安装Hadoop 3.1.3
(1)将Hadoop安装至/usr/local/
首先先从官网下载到Linux中,而后解压到/usr/local目录下;
而后将文件夹改名为hadoop。
(2)检查Hadoop是否可用
5.Hadoop伪分布式配置
Hadoop的运行方式是由配置文件决定的(运行Hadoop时会读取配置文件)。
伪分布式虽然只需要配置fs.defaultFS和dfs.replication就可以运行(官方教程如此),不过若没有配置hadoop.tmp.dir参数,则默认使用的临时目录为/tmp/hadoo-hadoop,而这个目录在重启时有可能被系统清理掉,导致必须重新执行format才行。所以以下步骤进行了设置,同时也指定了 dfs.namenode.name.dir和dfs.datanode.data.dir,否则在接下来的步骤中可能会出错。
(1)设置Hadoop环境变量
令环境变量生效:
(2)修改Hadoop配置文件
1.修改/usr/local/hadoop/etc/hadoop/中的hadoop-env.sh
2.修改/usr/local/hadoop/etc/hadoop/中的core-site.xml
3.修改/usr/local/hadoop/etc/hadoop/中的hdfs-site.xml
4.修改/usr/local/hadoop/etc/hadoop/中的yarn-site.xml(其中的ip为本机IP)
5.修改/usr/local/hadoop/etc/hadoop/中的mapred-site.xml
(3)执行NameNode的格式化
会返回以下信息(节选):
(4)开启NameNode和DataNode守护进程
启动完成后,可以通过命令jps来判断是否成功启动,若成功启动则会列出如下进程:“NameNode”、”DataNode”和“SecondaryNameNode”
- 【注1】以上hadoop启动过程中会遇到以下错误:
--------1.
解决措施:
--------2.
解决措施:
在/usr/local/hadoop/etc/hadoop/中的hadoop-env.sh增加以下信息:
- 【注2】启动时可能会出现如下WARN提示:
WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform… using builtin-java classes where applicable WARN
,提示可以忽略,并不会影响正常使用。若是想解决可以在~/.bashrc中添加如下环境变量:
而后令该环境变量生效即可:
按照以上解决措施做完后,重新启动hadoop就可以得到干净而没有错误的界面了:
(5)访问Web管理界面
成功启动后,可以访问Web界面http://localhost:9870查看NameNode和Datanode信息,还可以在线查看HDFS中的文件。
- 【注】若是无法进入,可以查看系统防火墙是否开启,若是开启状态,先将防火墙关闭,然后重新进入。另外:Hadoop3.1.3中HDFS为9870,YARN为18088。
6.启动YARN
YARN是从MapReduce中分离出来的,负责资源管理与任务调度。YARN运行于MapReduce之上,提供了高可用性、高扩展性。上述通过./sbin/start-dfs.sh启动Hadoop,仅仅是启动了MapReduce环境,我们可以启动YARN,让YARN来负责资源管理与任务调度。
启动之前需要修改mapred-site.xml和yarn-site.xml两个配置文件,在前面已经配置过了,所以这里直接启动:
7.运行Hadoop伪分布式实例
伪分布式读取的则是HDFS上的数据。要使用HDFS,则需按以下步骤进行:
(1)在HDFS中创建用户目录
- 【注】“./bin/hadoop dfs”开头的Shell命令方式,实际上有三种shell命令方式。hadoop fs,hadoop dfs,hdfs dfs。hadoop fs适用于任何不同的文件系统,比如本地文件系统和HDFS文件系统hadoop dfs只能适用于HDFS文件系统hdfs dfs跟hadoop dfs的命令作用一样,也只能适用于HDFS文件系统
(2)将文件上传至HDFS
将./etc/hadoop中的xml文件作为输入文件复制到分布式文件系统中,即将/usr/local/hadoop/etc/hadoop复制到分布式文件系统中的/user/hadoop/input中。
(3)查看HDFS中的文件列表
(4)将结果输出到output文件夹
将input文件夹中的所有文件作为输入,筛选当中符合正则表达式dfs[a-z.]+的单词并统计出现的次数,最后输出结果到output文件夹中:
- 【注】以上伪分布式运行MapReduce作业时会出现以下错误:
------1.failed on connection exception: java.net.ConnectException: 拒绝连接
解决措施:
出现以上情况是由于没有启动YARN的resourcemanager,所以为了以防出现上述错误,直接在运行MapReduce作业之前先将YARN启动,这样后就不会在出现以上错误了。
------2.org.apache.hadoop.mapreduce.v2.app.MRAppMaster错误:找不到或无法加载主类
解决措施:
在hadoop/etc/hadoop/yarn-site.xml添加以下: