搭建基于 HDFS 碎片文件存储服务-云服务器玩法在线实验

[复制链接]
查看: 316|回复: 0
发表于 2020-4-10 23:17:56 | 显示全部楼层 |阅读模式
实验内容
HDFS 是 Hadoop 的分布式文件系统,HDFS 中的文件在物理上是分块(block)存储的,块的大小可以通过配置参数( dfs.blocksize)来规定。在 Hadoop 2.x 版本中默认大小是 128M,一般将 1M 的文件定义为碎片文件,该类文件如果需要存储到 HDFS 中的话,需要合并成一个大文件存储在 HDFS 中的一个块中,这样可以节约存储空间。本教程从零开始,带您一步步搭建基于 HDFS 的碎片文件存储服务。

免费在线实验地址:点击进入
实验资源:云服务器,没有云服务器的朋友推荐1折抢购:69元/年的阿里云服务器、或者99元/年的腾讯云服务器

软件环境:CentOS 7.2 64 位


一、准备 Java 环境

安装 JDK
HDFS 依赖 Java 环境,这里我们使用 yum 安装 JDK 8,在终端中键入如下命令:
  1. yum -y install java-1.8.0-openjdk*
复制代码
使用如下命令查看下 Java 版本,我们可以验证 JDK 是否已成功安装:
  1. java -version
复制代码

配置 Java 环境变量
在编辑器中打开文件 /etc/profile,在文件末尾追加如下内容,配置 Java 环境变量:
  1. export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk
  2. export PATH=$PATH:$JAVA_HOME/bin
  3. export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
复制代码
然后执行如下命令,让环境变量生效:
  1. source /etc/profile
复制代码
通过如下命令,验证 Java 环境变量是否已成功配置并且生效:
  1. echo $JAVA_HOME
复制代码


二、准备 HDFS 环境
配置 SSH
先后执行如下两行命令,配置 SSH 以无密码模式登陆:
  1. ssh-keygen -t dsa -P '' -f ~/.ssh/id_dsa
  2. cat ~/.ssh/id_dsa.pub >> ~/.ssh/authorized_keys
复制代码
接着可以验证下,在不输入密码的情况下,应该能使用 ssh 命令成功连接本机:
  1. ssh <您的 CVM IP 地址>
复制代码
紧接着在终端中键入如下命令关闭 ssh 连接:
  1. exit
复制代码
SSH 配置完毕后,我们接着下载并安装 Hadoop。

安装 Hadoop
首先创建 /data/hadoop 目录,然后进入该目录:
  1. mkdir -p /data/hadoop && cd $_
复制代码
接着下载 Hadoop 安装包到该目录下:
  1. wget http://archive.apache.org/dist/hadoop/core/hadoop-2.7.1/hadoop-2.7.1.tar.gz
复制代码
解压下载好的 Hadoop 安装包到当前目录:
  1. tar -zxvf hadoop-2.7.1.tar.gz
复制代码
然后将解压后的目录重命名为 hadoop,并且将其移至 /usr/local/ 目录下:
  1. mv hadoop-2.7.1 hadoop && mv $_ /usr/local/
复制代码
在编辑器中打开 Hadoop 环境配置文件,使用 Ctrl + F 搜索如下行
  1. export JAVA_HOME=${JAVA_HOME}
复制代码
将其替换为:
  1. export JAVA_HOME=/usr/lib/jvm/jre-1.8.0-openjdk
复制代码
查看下 Hadoop 的版本:
  1. /usr/local/hadoop/bin/hadoop version
复制代码
可以看到 Hadoop 的版本信息:
  1. Hadoop 2.7.1
复制代码
安装 Hadoop 就是这么简单。至此 Hadoop 已经安装完成,紧接着我们需要做的就是修改 Hadoop 的配置信息。


Mac 用户请使用 Cmd + F 进行搜索

修改 Hadoop 配置
由于我们的实践环境是在单机下进行的,所以此处把 Hadoop 配置为伪分布式模式。

首先新建若干临时文件夹,我们在后续的配置中以及 HDFS 和 Hadoop 的启动过程中会使用到这些文件夹:
  1. cd /usr/local/hadoop && mkdir -p tmp dfs/name dfs/data
复制代码
修改 HDFS 配置文件 core-site.xml,将 configuration 配置修改为如下内容:

示例代码:/usr/local/hadoop/etc/hadoop/core-site.xml
  1. <configuration>  
  2.     <property>  
  3.         <name>hadoop.tmp.dir</name>  
  4.         <value>/usr/local/hadoop/tmp</value>
  5.     </property>  
  6.     <property>  
  7.         <name>fs.defaultFS</name>  
  8.         <value>hdfs://localhost:9000</value>
  9.     </property>  
  10. </configuration>
复制代码
修改 HDFS 配置文件 hdfs-site.xml,将 configuration 配置修改为如下内容:

示例代码:/usr/local/hadoop/etc/hadoop/hdfs-site.xml
  1. <configuration>   
  2.     <property>   
  3.         <name>dfs.replication</name>   
  4.         <value>1</value>   
  5.     </property>   
  6.     <property>   
  7.         <name>dfs.namenode.name.dir</name>   
  8.         <value>file:/usr/local/hadoop/dfs/name</value>   
  9.     </property>   
  10.     <property>   
  11.         <name>dfs.datanode.data.dir</name>   
  12.         <value>file:/usr/local/hadoop/dfs/data</value>   
  13.     </property>   
  14.     <property>
  15.         <name>dfs.permissions</name>   
  16.         <value>false</value>   
  17.     </property>   
  18. </configuration>
复制代码
修改 HDFS 配置文件 yarn-site.xml,将 configuration 配置修改为如下内容:

示例代码:/usr/local/hadoop/etc/hadoop/yarn-site.xml
  1. <configuration>  
  2.     <property>  
  3.         <name>mapreduce.framework.name</name>  
  4.         <value>yarn</value>  
  5.     </property>  

  6.     <property>  
  7.         <name>yarn.nodemanager.aux-services</name>  
  8.         <value>mapreduce_shuffle</value>  
  9.     </property>  
  10. </configuration>
复制代码
以上配置修改完毕后,我们可以尝试启动 Hadoop。

启动 Hadoop
首先进入如下目录:
  1. cd /usr/local/hadoop/bin/
复制代码
对 HDFS 文件系统进行格式化:
  1. ./hdfs namenode -format
复制代码
接着进入如下目录:
  1. cd /usr/local/hadoop/sbin/
复制代码
先后执行如下两个脚本启动 Hadoop:
  1. ./start-dfs.sh
  2. ./start-yarn.sh
复制代码
接着执行如下命令,验证 Hadoop 是否启动成功:
  1. jps
复制代码
如果输出了类似如下的指令,则说明 Hadoop 启动成功啦
  1. 21713 Jps
  2. 21089 SecondaryNameNode
  3. 21364 NodeManager
  4. 20795 NameNode
  5. 20923 DataNode
  6. 21245 ResourceManager
复制代码
至此,我们的 HDFS 环境就已经搭建好了。在浏览器中访问如下链接,应该能正常访问(注:若出现安全拦截请选择通过):
  1. http://<您的 CVM IP 地址>:50070/explorer.html#/
复制代码
接下来,我们实践下如何将碎片文件存储到 HDFS 中。
其中,第 1 列表示进程 ID,第 2 列表示进程名

三、存储碎片文件
准备碎片文件
首先创建目录用于存放碎片文件,进入该目录:
  1. mkdir -p /data/file && cd /data/file
复制代码
然后执行如下 shell 命令,新建一批碎片文件到该目录下
  1. i=1; while [ $i -le 99 ]; do name=`printf "test%02d.txt"  $i`; touch "$name"; i=$(($i+1)); done
复制代码
在终端中执行 ls 命令,可以看到我们已成功创建了一批碎片文件。
这里,为了简单起见,我们批量生成的文件都是空的

将碎片文件存储在 HDFS 中
首先在 HDFS 上新建目录:
  1. /usr/local/hadoop/bin/hadoop fs -mkdir /dest
复制代码
此时,在浏览器是访问如下链接,可以看到 /dest 目录已创建,但是暂时还没有内容:
  1. http://<您的 CVM IP 地址>:50070/explorer.html#/dest
复制代码
接着我们可以上传碎片文件啦!
首先在终端中依次执行以下命令
  1. groupadd supergroup
复制代码
然后将之前创建的碎片文件上传到 HDFS 中:
  1. cd /data/file && /usr/local/hadoop/bin/hadoop fs -put *.txt /dest
复制代码
这时,再使用如下命令,我们应该能看到碎片文件已成功上传到 HDFS 中:
  1. /usr/local/hadoop/bin/hadoop fs -ls /dest
复制代码
在上传之前,我们需先创建 HDFS 用户组 supergroup,然后将 root 用户添加到该组中,否则会因权限问题页报告异常。
四、部署完成
访问服务
在浏览器是访问如下链接,可以看到 /dest 目录的文件内容:
  1. http://<您的 CVM IP 地址>:50070/explorer.html#/dest
复制代码
大功告成
恭喜您已经完成了搭建基于 HDFS 碎片文件存储服务的学习

腾讯云
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩图文



在线客服(工作时间:9:00-22:00)
400-600-6565

内容导航

微信客服

Copyright   ©2015-2019  云服务器社区  Powered by©Discuz!  技术支持:尊托网络     ( 湘ICP备15009499号-1 )