学校:许昌学院 学院:信息工程学院 实验环境: 操作系统:Linux (CentOS 6.7) JDK版本:1.8 (8u161) Hadoop版本:2.7.4 虚拟机:VMware Workstation Pro 15.5 参考资料: Hadoop大数据技术原理与应用 linux命令大全(手册) 大数据平台核心技术 樊志伟
1. 实验目的
熟悉常用Linux操作,学会搭建Hadoop集群,为后续上机实验做准备。
2. 实验环境(推荐)
操作系统:Linux (CentOS 6.7) JDK版本:1.8 (8u161) Hadoop版本:2.7.4
3. 实验内容和要求
1. 实验目的
-
掌握HDFS操作常用的Shell命令;
-
熟悉HDFS操作常用的Java API;
-
掌握倒排索引及其MapReduce实现。
2. 实验环境(推荐)
-
Java开发环境:JDK 1.8 (8u161)
-
分布式开发环境:Hadoop 2.7.4
-
集成开发环境:Eclipse或IntelliJ IDEA
-
项目构建工具:Maven 3.5.4
3. 实验内容和要求
1、安装虚拟机
注意:每台虚拟机的内存需要量力而行,因为一共三台虚拟机加一台主机呢!如:本机共8g内存,那么平均分给4台电脑,每台可设2g内存!
2、创建工作目录:
mkdir -p /export/data
mkdir -p /export/software
mkdir -p /export/servers
3、克隆虚拟机
4、Linux网络配置
a>配置VM ware b>配置主机名 :vi /etc/sysconfig/network c>配置IP地址映射: vi /etc/hosts
5、网络参数配置
a>配置MAC地址 b>配置静态IP c>验证
6、SSH服务配置
a> 查看是否安装SSH: rpm -qa |grep ssh b>安装SSH: yum install openssh-server c>查看SSH服务是否启动: ps -e | grep sshd
7、虚拟机免密登录
-
为什么要免密登录
Hadoop节点众多,所以一般在主节点启动从节点这个时候就需要程序自动在主节点登录到从节点中,如果不能免密就每次都要输入密码,非常麻烦
-
免密SSH登录的原理
1.需要先在B节点配置A节点的公钥 2. A节点请求B节点要求登录 3. B节点使用A节点的公钥,加密- -段随机文本 4. A节点使用私钥解密,并发回给B节点 5. B节点验证文本是否正确
-
第一步:三台机器生成公钥与私钥
在三台机器执行以下命令,生成公钥与私钥 ssh -keygen -t rsa 执行该命令之后,按下三个回车即可
-
第二步:拷贝公钥到同一台机器
三台机器将拷贝公钥到第一台机器 三台机器执行命令: ssh-copy-id hadoop01
-
第三步:复制第一台机器的认证到其他机器
将第一台机器的公钥拷贝到其他机器上 在第一天机器上面指向以下命令 scp /root/.ssh/authorized_ keys hadoop02:/root/.ssh
scp /root/.ssh/authorized_ keys hadoop03:/root/.ssh
1、安装文件上传工具
2、JDK安装
- 下载JDK
https://www.oracle.com/technetwork/java/javase/downloads/index.html
- 查看当前系统自带jdk并卸载:
注:参考:here
然后通过 rpm -e --nodeps 后面跟系统自带的jdk名 这个命令来删除系统自带的jdk,
删完之后可以再通过 rpm -qa | grep Java 命令来查询出是否删除掉
- 安装JDK
- 配置JDK环境变量
- JDK环境验证
3、Hadoop安装:
- 下载Hadoop安装包
http://archive.apache.org/dist/hadoop/common/
- 解压安装Hadoop
- 配置
修改完成之后记得source /etc/profle生效
source /etc/profile
- 验证Hadoop环境
4、Hadoop集群配置
#进入目录
cd /export/servers/hadoop-2.7.4/etc/hadoop
4.1 配置Hadoop集群主节点
该部分可参考:官方文档
-
修改hadoop-env.sh
export JAVA_HOME=/export/servers/jdk
-
修改core-site.xml
-
修改hdfs-site.xml
-
修改mapred-site.xml
cp mapred-site.xml.template mapred-site.xml
-
修改yarn-site.xml
-
修改slaves文件。打开该配置文件,先删除里面的内容(默认localhost) ,然后配置如下内容。
4.2 将集群主节点的配置文件分发到其他子节点
1、格式化文件系统
初次启动HDFS集群时,必须对主节点进行格式化处理。
格式化文件系统指令如下:
2、启动和关闭Hadoop集群
-
单节点逐个启动和关闭
-
在主节点上执行指令启动/关闭HDFS NameNode进程;
-
在每个从节点上执行指令启动/关闭HDFS DataNode进程;
-
在主节点上执行指令启动/关闭YARN ResourceManiger进程;
-
在每个从节点上执行指令启动/关闭YARN nodemanager进程;
-
在节点hadoop02执行指令启动/关闭SecondaryNameNode进程。
-
关闭只需将start 换成stop
-
-
脚本一键启动和关闭
- 在主节点hadoop01上执行指令“start-dfs.sh”或“stop-dfs.sh”启动/关闭所有HDFS服务进程;
- 在主节点hadoop01上执行指令“start-yarn.sh”或“stop-yarn.sh”启动/关闭所有YARN服务进程;
- 在主节点hadoop01上执行“start-all.sh”或“stop-all.sh”指令,直接启动/关闭整个Hadoop集群服务。
3、通过UI查看Hadoop运行状态
Hadoop集群正常启动后,它默认开放了两个端口50070和8088,分别用于监控HDFS集群和YARN集群。通过UI界面可以方便地进行集群的管理和查看,只需要在本地操作系统的浏览器输入集群服务的IP和对应的端口号即可访问。
在Windows系统下,访问http://hadoop01:8088,查看Yarn集群状态,且从图中可以看出Yarn集群状态显示正常。 注:点击左侧Nodes,看到以下页面,一般配置就正确了
Hadoop经典案例——单词统计
-
打开HDFS的UI界面,查看HDFS中是否有数据文件,默认是没有数据文件。
-
准备文本文件,在Linux系统上编辑一个文本文件,然后上传至HDFS上。
创建数据存储目录:mkdir -p /export/data
编辑文件:vi word.txt
写入一些单词:
hello itcast
hello itheima
hello Hadoop
在hdfs上创建目录:hadoop fs -mkdir -p /wordcount/input
将文件上传至hdfs 的目录:hadoop fs -put /export/data/word.txt /wordcount/input
-
运行hadoop-mapreduce-examples-2.7.4.jar包,实现词频统计。
进入:cd /export/servers/hadoop-2.7.4/share/hadoop/mapreduce
执行:hadoop jar hadoop-mapreduce-examples-2.7.4.jar wordcount /wordcount/input /wordcount/output 注:执行该步时出错,(一直为接受状态,没有运行;有大佬请解答!)如下图:(已解决!) 成功界面:
-
查看UI界面,Yarn集群UI界面出现程序运行成功的信息。HDFS集群UI界面出现了结果文件。
Shell在计算机科学中俗称“壳”,是提供给使用者使用界面的进行与系统交互的软件,通过接收用户输入的命令执行相应的操作,Shell分为图形界面Shell和命令行式Shell。
官方文档:here
上述命令中,“hadoop fs" 是使用面最广,可以操作任何文件系统,如本地系统、HDFS等,“hadoop dfs"则主要针对HDFS文件系统,已经被“Ihdfs dfs"代替。
文件系统(FS) Shell 包含了各种的类shell的命令,可以直接与Hadoop分布式文件系统以及其他文件系统进行交互,如与LocalFS、 HTTPFS、S3 FS 文件系统交互等。通过命令行的方式进行交互,具体操作常用命令,如表下表:
1、 ls命令 2、 mkdir命令 3、 put命令 4、 get命令 5、 其他命令:here
由于Hadoop是使用Java语言编写的,因此可以使用Java API操作Hadoop文件系统。HDFS Shell本质上就是对Java API的应用,通过编程的形式操作HDFS,其核心是使用HDFS提供的Java API构造一个访问客户端对象,然后通过客户端对象对HDFS上的文件进行操作(增、删、改、查)。 参考:https://my.oschina.net/u/2371923/blog/2870791
(1) 搭建Hadoop HDFS开发环境
1、win10上搭建hadoop环境
1).官网下载hadoop-2.7.4.tar.gz版本,解压:D:hadoop-2.7.4
2).配置环境变量
3.将windows上编译的文件hadoop.dll、winutils.exe放至%HADOOP_HOME%bin下
4.将hadoop.dll放到c:/windows/System32下
5.设置D:hadoop-2.7.4etchadoophadoop-env.cmd中的JAVA_HOME为真实java路径(路径中不能带空格,否者会报错).
6.测试hadoop是否配置成功,命令行输入:hadoop version
2、在idea中新建maven工程hadoop-demo
idea配置maven 打开Settings —>搜索maven—>进入就能看到自带maven
更改maven数据源: 1、在安装目录找到该文件
2、打开修改以下部分并保存。
3、将上述文件copy至以下目录进行覆盖
4、重启idea
(2) 初始化HDFS客户端对象 1、创建maven工程并添加依赖,import依赖
2、创建java类,添加初始化HDFS客户端对象的方法
(3) 在本地创建文本文件并上传到HDFS 1、在本地创建文件: 2、添加上传文件测试方法
3、启动hadoop集群,运行测试方法进行测试 (4) 从HDFS将上传的文件下载到本地 1、添加下载文件的测试方法
2、启动集群,运行方法测试
在3.4中的工程里面新建包:cn.itcast.mr.invertedIndex
(1) 收集数据,根据来源将数据存储在多个文本文件中 (2) 编写Map阶段程序代码
(3) 编写Combine阶段程序代码(可选)
(4) 编写Reduce阶段程序代码
(5) 实现Driver主驱动程序并测试运行
(6)运行结果
1、jdk安装成功,却使用的系统自带jdk
参考本文:jdk安装 —>查看当前系统自带jdk并卸载: 注:参考:here
2、无法启动 NodeManager
本机配置不满足,修改yarn-siet.xml文件.添加下面内容:
注:参考:here
3、执行词频统计一直处于接受,未运行
属于服务未全部启动,请确保下图服务启动:
1、运行报错:无法连接到hadoop01:9000
解决:Hadoop集群未开启导致,将集群开启即可。
2、配置完成却运行报错:
解决:查询原因是因为:jdk路径出现空格导致。重新安装jdk至无空格和中文的路径下即可。
3、Driver主驱动程序进行测试运行报错:
解决:通过删除已存在的输出目录进行解决
本文地址:http://yy520w.xhstdz.com/quote/3429.html 物流网资讯 http://yy520w.xhstdz.com/static/ , 查看更多