项目实训第一天
本文最后更新于:2021年7月23日 晚上
简介
概述
- Hadoop是Yahoo!开发后来贡献给了Apache的一套分布式机制
- Hadoop提供了简单的编程模型来对大量数据进行计算
- Hadoop能够从一台服务器扩展到上千台服务器,每一台服务器都能够进行计算和存储
- Hadoop提供了探测和处理异常的机制
- Hadoop本身的版本非常混乱,在选择版本的时候需要注意版本和组件之间的兼容性
模块
- Hadoop Common:公共模块,实际上就是依赖Nutch的包
- Hadoop Distributed File System (HDFS™):分布式文件系统,提供了分布式存储的功能
- Hadoop YARN:任务调度和集群的资源管理
- Hadoop MapReduce:分布式计算
- Hadoop Ozone:对象存储
版本
- Hadoop1.X:包含Common、HDFS、MapReduce模块。已经停止使用
- Hadoop2.X:包含了Common、HDFS、MapReduce、YARN模块。Hadoop2.X和Hadoop1.X全版本不兼容
- Hadoop3.X:包含了所有的模块,和Hadoop2.X部分版本兼容
本次使用的是hadoop-3.1.3
安装步骤
关闭防火墙
1
2
3
4
5# 用root用户登录
# 临时关闭防火墙
systemctl stop firewalld
# 永久关闭防火墙
systemctl disable firewalld修改主机名
1
2vim /etc/hostname
# 然后删掉localhost,改为自己指定的主机名,例如主机名改成hadoop将主机名和IP进行映射
1
2
3vim /etc/hosts
# 添加IP 主机名,例如
192.168.122.1 hadoop重启
1
reboot
进行免密互通
1
2
3
4
5
6
7
8
9
10# 产生密钥
ssh-keygen
# 复制密钥到root账户的authoried_key中,这样就可以免密用root账户登录hadoop主机
ssh-copy-id root@hadoop
# 回车之后输入yes,然后回车输入密码
# 测试免密是否成功
ssh hadoop
# 如果不需要输入密码,则退出ssh登录
logout解压
1
tar -xvf hadoop-3.1.3.tar.gz
配置环境变量
1
2
3
4
5
6
7
8vim /etc/profile
# 在文件中添加
export HADOOP_HOME=/opt/hadoop-3.1.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
# 保存退出,重新生效
source /etc/profile
# 检查环境变量是否配置正确
hadoop version进入Hadoop的配置目录
1
cd hadoop-3.1.3/etc/hadoop/
修改文件
1
2
3
4
5echo $JAVA_HOME# 复制打印出来的JDK的安装路径vim hadoop-env.sh
# 在文件末尾添加
export JAVA_HOME=/opt/jdk1.8.0_181
export HADOOP_CONF_DIR=/opt/hadoop-3.1.3/etc/hadoop
# 保存退出,重新生效source hadoop-env.sh编辑文件
1
vim core-site.xml
在configuration标签中添加
1
2
3
4
5
6
7<property>
<name>fs.default.name</name>
<value>hdfs://hadoop:9000</value>
</property><property>
<name>hadoop.tmp.dir</name>
<value>/opt/hadoop-3.1.3/tmp</value>
</property>编辑文件
1
vim hdfs-site.xml
在configuration标签中添加
1
2
3
4<property>
<name>dfs.replication</name>
<value>1</value>
</property>编辑文件
1
vim mapred-site.xml
在configuration标签中添加
1
2
3
4<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>编辑文件
1
vim yarn-site.xml
在configuration标签中添加
1
2
3
4
5
6
7
8<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>编辑hdfs启动和结束命令文件
start-dfs.sh和stop-dfs.sh都要修改
1
2
3cd /opt/hadoop_3.1.3/sbin
vim start-dfs.sh
vim stop-dfs.sh在文件开头添加:
1
2
3
4HDFS_DATANODE_USER=root
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root
HDFS_DATANODE_SECURE_USER=hdfs编辑yarn启动和结束命令文件
start-yarn.sh和stop-yarn.sh都要修改
1
2vim start-yarn.sh
vim stop-yarn.sh在文件开头添加:
1
2
3YARN_RESOURCEMANAGER_USER=root
YARN_NODEMANAGER_USER=root
HDFS_DATANODE_SECURE_USER=hdfs格式化hdfs并启动
1
hdfs namenode -format
启动:
1
start-all.sh
查看是否启动成功:
1
2
3
4
5
6
7
8jps
22400 DataNode
23043 NodeManager
23382 Jps
22908 ResourceManager
22255 NameNode
22655 SecondaryNameNode
使用其它工具
下载HDFS Explorer,连接HDFS,端口填9870,我虽然能连接上但是无法上传文件,会出现
Bad Gateway
的错误,老师说这个不用也行,直接用IDEA的BigDataTools
插件连接。打开IDEA,安装
BigDataTools
插件- 解压Hadoop的安装包,给Windows配置Hadoop-3.1.3的环境变量:
用老师给的bin包,将Hadoop-3.1.3文件夹下的bin内容进行覆盖,不然会报奇奇怪怪的错误
重启打开终端测试
hadoop -version
,不知道为什么我会输出Java的版本信息???,但是后面能正常连上HDFS,就没管这个问题了然后用
BigDataTools
新建HDFS连接:- Authentication type:
Explicit uri
- File System URl:
填写你虚拟机的ip:9000
- Username:
root
如果你出现了
Invalid root
的错误,是因为你格式化HDFS后没有进行任何操作,这时候,你在你的虚拟机终端随便操作一下HDFS,如:hadoop fs -mkdir /user
,新建一个user文件夹,在回到IDEA进行连接就没问题了。- Authentication type:
新建IDEA maven项目,放入如下pom.xml文件,设置依赖:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32<dependencies>
<!--单元测试-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<!--日志打印-->
<dependency>
<groupId>org.apache.logging.log4j</groupId>
<artifactId>log4j-slf4j-impl</artifactId>
<version>2.12.0</version>
</dependency>
<!--Hadoop通用包-->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-common</artifactId>
<version>3.1.3</version>
</dependency>
<!--Hadoop客户端-->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.1.3</version>
</dependency>
<!--Hadoop HDFS-->
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-hdfs</artifactId>
<version>3.1.3</version>
</dependency>
</dependencies>如果你拉不下来,请更换镜像源,或者去Maven仓库搜索,换个版本,在拉取依赖。有时候IDEA会抽风,这时候就重启一下。
然后新建一个module,等待明天开始编程。
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!