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.xmlHDFS配置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.xmlMAPRED配置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

Leave a Comment

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据