千家信息网

hadoop/hdfs的示例分析

发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章给大家分享的是有关hadoop/hdfs的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。hadoop/hdfs首先hadoop是apache基金会用java
千家信息网最后更新 2026年11月04日hadoop/hdfs的示例分析

这篇文章给大家分享的是有关hadoop/hdfs的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

hadoop/hdfs

首先hadoop是apache基金会用java语言实现的开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算。

hadoop/hdfs和mfs都是分布式文件系统,二者的比较如下

1、hdfs和mfs都是类似goolefs的实现方式,即一个master+多个chunkserver构成的集群

2、都存在master单点故障问题

3、都支持在线扩容

4、都是处理海量数据的,但对海量小文件处理乏力

差异:

1、hadoop基于java实现,mfs基于c++实现

2、mfs提供的快照功能

3、

所以,首先要保证java平台能够正常运行,下载安装jdk原码薄,一般情况下将其解压放至/usr/local然后创建软连接。

hadoop单机模式:

[root@server1 local]# ln -s jdk1.7.0_79/ java

进入/etc/profile下修改java路径(java_home,classpath,path)。

export JAVA_HOME=/usr/local/java

export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH=$PATH:$JAVA_HOME/bin

source使配置文件生效。

[root@server1 java]# source /etc/profile

查看配置是否正确

[root@server1 java]# echo $JAVA_HOME

/usr/local/java

[root@server1 java]# echo $CLASSPATH

.:/usr/local/java/lib:/usr/local/java/jre/lib

[root@server1 java]# echo $PATH

/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/usr/local/java/bin:/usr/local/java/bin

***如果是配置文件错误导致无法使用系统命令,那么需要使用绝对路径来调用命令

编写一个java小程序,测试java环境的正确性:

[root@server1 java]# cat test.java

class test

{

public static void main (String args[]){

System.out.println("hello world ");

}

}

[root@server1 java]# !jav

javac test.java

[root@server1 java]# java test

hello world

至此,java环境配置完成。

hadoop/hdfs安装。

[root@server1 hadoop]# tar -xf hadoop-2.7.3.tar.gz -C /usr/local/

创建软连接:

[root@server1 local]# ln -s hadoop-2.7.3/ hadoop

默认情况下hadoop是运行在非分布式模式,在这种情况下,可以进行debug。

尝试使用hdfs对数据进行统计:

[root@server1 hadoop]# pwd

/usr/local/hadoop

$mkdir input

$ cp etc/hadoop/*.xml input

$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep input output 'dfs[a-z.]+'

$ cat output/*

[root@server1 hadoop]# cat output/*

1dfsadmin

1dfs.replication

hdfs伪分布模式

很多hadoop配置的模版在share/doc中都有,所以将其移到/var/www/html下,使用网页查看,以便修改配置文件:

[root@server1 doc]# cp hadoop/ /var/www/html/ -r

[root@server1 hadoop]# pwd

/usr/local/hadoop/etc/hadoop

[root@server1 hadoop]# vim core-site.xml

fs.defaultFS

hdfs://172.25.33.1:9000

namenode IP也可以使用主机名,但最好要有解析。

[root@server1 hadoop]# vim hdfs-site.xml

dfs.replication

1//分片数量,单机模式将其配置为1.

[root@server1 hadoop]# vim hadoop-env.sh

24 # The java implementation to use.

25 export JAVA_HOME=/usr/local/java

在启动hdfs时会使用ssh进行多次登陆,所以,设置ssh输入密码登陆。

[root@server1 hadoop]# ssh-keygen //一路回车

[root@server1 hadoop]# ssh-copy-id 172.25.33.1//将密钥分发给172.25.33.1,即刚才在core-site中设置的IP

使用ssh 172.25.33.1可以无密码访问即为成功

格式化namenode 节点

[root@server1 hadoop]# bin/hdfs namenode -format

启动hdfs

[root@server1 hadoop]# sbin/start-dfs.sh

使用jps查看本节点的资源信息

[root@server1 hadoop]# jps

2918 NameNode

3011 DataNode

3293 Jps

3184 SecondaryNameNode

此时可以通过网页的50070访问到关于hdfs的信息

***如果发现无法访问,并提示not found,检查本地的50070是否打开,然后清理/tmp/下的所有临时文件,再清空浏览器的缓存,再次访问。

创建hdfs目录,以便于执行mapreduce工作。

bin/hdfs dfs -mkdir /user

bin/hdfs dfs -mkdir /user/root

***如果在这里没有创建hdfs目录,那么可能会出现没有这个目录的报错。

项分布式系统中放一些东西

bin/hdfs dfs -put etc/hadoop/ input

运行mapreduce的一些测试方法:

$ bin/hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.3.jar grep input output 'dfs[a-z.]+'

检测输出的结果,

[root@server1 hadoop]# bin/hdfs dfs -get output output

[root@server1 hadoop]# cat output/*

6dfs.audit.logger

4dfs.class

3dfs.server.namenode.

2dfs.period

2dfs.audit.log.maxfilesize

2dfs.audit.log.maxbackupindex

1dfsmetrics.log

1dfsadmin

1dfs.servers

1dfs.replication

1dfs.file

或直接执行:

[root@server1 hadoop]# bin/hdfs dfs -cat output/*

同时也可以在浏览器中查看结果是否成功

使用bin/hdfs dfs 回车,会发现好多可以执行的命令。

分布式hdfs

停掉bin/stop-dfs.sh

启动三台虚拟机:

为三台虚拟机创建hadoop用户,uid=1000

mv hadoop-2.7.3/ /home/hadoop/

vim /etc/profile

export JAVA_HOME=/home/hadoop/java

export CLASSPATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

export PATH=$PATH:$JAVA_HOME/bin

source /etc/profile

改变/home/hadoop/下的所有文件的所属主和所属组均为hadoop

在2,3,4上均安装nfs-utils 实现/home/hadoop目录共享

修改配置文件,将/home/hadoop共享出去

vim /etc/exports

/home/hadoop 172.25.33.0/24(rw,anonuid=1000,anongid=1000)

为server1添加slaves

[root@server1 hadoop]# pwd

/home/hadoop/hadoop/etc/hadoop

编辑slaves文件,添加要共享的主机IP

172.25.33.3

172.25.33.4

启动nfs

service nfs start

并检查rpcbind and rpcidmapd 的状态

如果二者的状态不在运行,那么,nfs可能无法启动

将二者体起来

在server1上执行showmount -e来查看自己的共享

使用exports -v 输出自己的共享

exportfs -v

/shared 172.25.33.2/24(rw,wdelay,root_squash,no_subtree_check)

/var/www/html/upload

172.25.33.2/24(rw,wdelay,root_squash,no_subtree_check)

/home/hadoop 172.25.33.0/24(rw,wdelay,root_squash,no_subtree_check,anonuid=1000,anongid=1000)

在server2,3,4上挂在/home/hadoop /home/hadoop

为2,3,4的hadoop用户设置免密码登陆

为每个hadoop设置密码

切换到hadoop用户,生成密钥:

ssh-keygen

然后将其分发出去:

ssh-copy-id 172.25.33.2/3/4

为每台机器添加java环境变量

vim /etc/profile

source /etc/profile

将/home/hadoop目录中文件的属主属组改为hadoop

编辑[root@server1 hadoop]# vim hdfs-site.xml

将value 值改为2.

使用hadoop格式化,启动hdfs

使用jps查看发现

[hadoop@server1 hadoop]$ jps

17846 Jps

17737 SecondaryNameNode

17545 NameNode

在本地没有了datanode,在3,4上看,发现数据节点已经传过来了。

jps

[hadoop@server3 ~]$ jps

3005 DataNode

3110 Jps

此时可能有各种各样的原因导致各种错误,因此,如果出现某个节点无法启动,可以在hadoop/对应目录下有log/下边有各种日志,方便派错哦。

此次错误主要是namenode无法启动,经过派错发现,50070端口被java已经占用,所以,果断一个killall - 9 java,弄死他,然后在从新格式化,启动,即OK ~

创建hdfs执行目录:

bin/hdfs dfs -mkdir /user

bin/hdfs dfs -mkdir /user/hadoop

bin/hdfs dfs -put etc/hadoop/ input

bin/hdfs dfs -cat input/*

在浏览器中同样可以看到

使用bin/hdfs dfsadmin -report可以查看资源输出和占用情况。

启动资源管理器:

yarn

yarn是hadoop的资源管理器,他的设计思想时将jobTracker拆分成了两个独立的服务,一个是全剧的资源管理器,ResourceManager和每个应用程序特有的ApplicationMaster

ResourceManager负责整个系统的资源分配和管理,而AM负责单个应用程序的管理

其总体上仍然是M/S结构。

hdfs资源迁移:

对新机器做根目录共享和挂在,启动datanode节点

[hadoop@server5 hadoop]$ sbin/hadoop-daemon.sh start datanode

在5上同样要有hosts解析,同时要有sshkey免密码钥匙

在server1上执行bin/hdfs dfsadmin -report可以看到server5在节点中。

在server1上,添加datanode控制文件:

vim hdfs.site.xml

dfs.replication

2

dfs.hosts.exclude

/home/hadoop/hadoop/etc/hadoop/exludes

添加控制资源信息

[hadoop@server1 hadoop]$ vim /home/hadoop/hadoop/etc/hadoop/exludes

172.25.33.3//对server3的资源进行操作。

刷新资源节点:

[hadoop@server1 hadoop]$ bin/hdfs dfsadmin -refreshNodes

它会提示成功,但是,实际进行的资源转移正在进行。

使用[hadoop@server1 hadoop]$ bin/hdfs dfsadmin -report

查看资源变化状态。

当资源进行后,使用

[hadoop@server3 hadoop]$ sbin/hadoop-daemon.sh stop datanode

停掉该节点的资源。

使用bin/hdfs dfsadmin -report就会发现,资源3已经停止了。

使用jps已经没有资源信息了。

感谢各位的阅读!关于"hadoop/hdfs的示例分析"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

资源 文件 节点 配置 目录 分布式 密码 管理 信息 情况 数据 模式 系统 运行 成功 命令 格式 浏览器 海量 状态 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 手冲咖啡和咖啡机区别 亿人帮互联网科技有限公司 中国互联网科技工作委员会毛军 中国互联网科技股 圆梦互联网科技 网络科技有限互联网 高科技与互联网 互联网科技公司电话 上海致骋互联网科技 科技类的互联网平台 成都玖崟互联网科技有限公司乐商圈怎么样 创业天下互联网科技有限公司 互联网科技寓意 栖莱科技互联网股份有限公司 宝灵互联网科技有限公司 云南省自由互联网科技有限公司 抖集互联网科技技术咨询 中国互联网公司的科技投入 山东蛋芒互联网科技有限公司 陕西彩京云互联网科技有限公司 宜安科技 互联网金融 成都仁贤领冠互联网科技有限公司 恒生科技互联网指数分析 小米互联网科技园设置 成都互联网科技公司100强 崇明区互联网教育科技诚信经营 阿大互联网科技有限公司 世界互联网科技成果奖 米泉互联网科技专业怎么样 山东蛋芒互联网科技有限公司
0