Hadoop3.x 学习笔记
环境注意事项
一开始我使用的是在Mac系统下 Docker 中建立了三个环境来搭建的,但是由于HDFS操作的时候是客户端直接联系DataNode来进行数据操作的原理,Mac下不能直接访问到Docker中的容器服务,也不能通过桥接连接,所以我后来改为在VirtualBox中安装了三个Linux虚拟机,才配置通了。
安装和配置
下载Hadoop 的 压缩包,解压后,设置环境变量,我这里假设解压到 /opt/hadoop
路径:
vim /etc/profile.d/hadoop
export HDFS_NAMENODE_USER=root
export HDFS_DATANODE_USER=root
export HDFS_SECONDARYNAMENODE_USER=root
export YARN_RESOURCEMANAGER_USER=root
export YARN_NODEMANAGER_USER=root
export PATH=/opt/hadoop/sbin:/opt/hadoop/bin:$PATH
127.0.0.1 localhost
192.168.56.11 hadoop-1 debian1
192.168.56.12 hadoop-2 debian2
192.168.56.13 hadoop-3 debian3
<configuration>
<property>
<name>dfs.datanode.data.dir</name>
<value>file:///opt/hadoop/data/datanode</value>
</property>
<property>
<name>dfs.namenode.name.dir</name>
<value>file:///opt/hadoop/data/namenode</value>
</property>
<property>
<name>dfs.namenode.http-address</name>
<value>hadoop-1:50070</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>hadoop-1:50090</value>
</property>
<!-- 不开启文件权限控制 -->
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
</configuration>
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://hadoop-1:9000</value>
</property>
</configuration>
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>hadoop-1:8025</value>
</property>
<property>
<name>yarn.resourcemanager.scheduler.address</name>
<value>hadoop-1:8030</value>
</property>
<property>
<name>yarn.resourcemanager.address</name>
<value>hadoop-1:8050</value>
</property>
</configuration>
/opt/hadoop/sbin/start-all.sh
<dependency>
<groupId>org.apache.hadoop</groupId>
<artifactId>hadoop-client</artifactId>
<version>3.2.1</version>
</dependency>
static FileSystem getFileSystem() throws IOException, URISyntaxException {
URI uri = new URI("hdfs://localhost:9000/");
// 使用HDFS文件系统并提供服务器路径,端口号在core-site.xml中配置
return org.apache.hadoop.fs.FileSystem.get(uri, new Configuration());
}
方法名 | 说明 |
---|---|
listStatus | 列出文件 |
copyFromLocalFile、copyToLocalFile | 复制文件 |
moveFromLocalFile、moveToLocalFile | 移动文件 |
mkdirs | 创建目录 |
Touch | 创建文件 |
rename | 改名 |
exists | 判断文件是否存在 |
setReplication | 设置复制份数 |
getTrashRoot | 获取NDFS回收站路径地址 |
setOwner | 设置文件所属用户 |
setPermission | 设置文件权限 |
createSymlink | 创建文件链接 |
FileSystem 的常用方法
使用FileSystem对象操作文件,Path
对象用来表示文件的路径
Java代码:
添加依赖
Java 客户端连接HDFS
DataNode 启动时,只需要启动 sbin/start-dfs.sh
就可以
启动DataNode
服务 | 说明 |
---|---|
NameNode | 分布式文件系统的管理端,存储着DataNode的状态和文件层级结构 |
SecondaryNameNode | 备份NameNode,用于恢复NameNode |
NodeManager | ? |
DataNode | 存取数据的服务 |
ResourceManager | ? |
包含以下服务:
直接执行下面的脚本,启动所有服务:
启动服务
yarn-site.xml
core-site.xml
hdfs-site.xml
配置详细说明:
文件 | 作用 | 默认值 |
---|---|---|
core-site.xml | 全局配置 | http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-common/core-default.xml |
hdfs-site.xml | HDFS配置 | http://hadoop.apache.org/docs/current/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml |
yarn-site.xml | 资源配置 | http://hadoop.apache.org/docs/current/hadoop-yarn/hadoop-yarn-common/yarn-default.xml |
mapred-site.xml | MAPRED配置 | http://hadoop.apache.org/docs/current/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml |
kms-site.xml | 密钥服务配置 | – |
配置文件 (/opt/hadoop/etc/hadoop中)
使用 ssh-keygen
生成id_rsa.pub
的文件,然后将三个主机的此文件中的内容合并起来放到每个节点的 ~/.ssh/authorized_keys
中,确保节点之间可以免密ssh登录
在/etc/hosts
中设置主机名和IP映射
如果是 ubuntu 系统的话可以放到 /etc/profile.d/
的某个文件下,如果是debian
建议放到~/.bashrc
中
相关文章
- EasyCVR对接华为iVS订阅摄像机和用户变更请求接口介绍
- 精选 | 腾讯云CDN内容加速场景有哪些?
- 模块化网络防止基于模型的多任务强化学习中的灾难性干扰
- 用搜索和注意力学习稳健的调度方法
- 用于多变量时间序列异常检测的学习图神经网络
- 助力政企自动化自然生长,华为WeAutomate RPA是怎么做到的?
- 使用腾讯轻量云搭建Fiora聊天室
- TSRC安全测试规范
- 云计算“功守道”
- 助力成本优化,腾讯全场景在离线混部系统Caelus正式开源
- Flink 利器:开源平台 StreamX 简介
- 腾讯云实践 | 一图揭秘腾讯碳中和?解决方案
- 深度学习中的轻量级网络架构总结与代码实现
- 信息系统项目管理师(高项复习笔记三)
- Adobe国际认证让科技赋能时尚
- c++该怎么学习(面试吃土记)
- 面试官问发布订阅模式是在问什么?
- 面试官:请实现一个通用函数把 callback 转成 promise
- 空中悬停、翻滚转身、成功着陆,我用强化学习「回收」了SpaceX的火箭
- 中山大学林倞解读视觉语义理解新趋势:从表达学习到知识及因果融合