您的位置:首页 > 运维架构

(2) Hadoop-集群搭建 HDFS入门

2017-10-30 18:41 316 查看

1.Hadoop 介绍

概述

用java编写开源框架,允许使用简单的API在大量的 计算机集群上 针对 大型数据集 进行分布式处理

Hadoop 核心组建 (狭义)

HDFS (分布式文件系统):针对海量数据的存储

YARN (作业调度,集群资源管理框架) : 解决资源任务调度,资源包括内存 CPU 磁盘。。

MAPREDUCE(分布式运算编程框架):解决海量数据的计算

Hadoop 生态圈 (广义) 同spring想类似,spring生态圈

HDFS:分布式文件系统

MAPREDUCE:分布式运算程序开发框架

HIVE:基于 HADOOP 的分布式数据仓库,提供基于 SQL 的查询数据操作

HBASE:基于 HADOOP 的分布式海量数据库

ZOOKEEPER:分布式协调服务基础组件

Mahout:基于 mapreduce/spark/flink 等分布式运算框架的机器学习算法库

Oozie:工作流调度框架

Sqoop:数据导入导出工具(比如用于 mysql 和 HDFS 之间)

Flume:日志数据采集框架

Impala:基于 Hadoop 的实时分析

2.Hadoop 国内外应用

在大数据的行业 各个领域都会有应用,因此在未来的发展绝对会没有问题 需求量也会越来越大!坚信自己的选择,做人做事一定要明白 不是因为看到才会相信,而是因为相信才要坚持 。

3.Hadoop 特性优点

扩容能力 : 在需要的时候可以扩大集群计算

成本低 : 对于服务器性能要求低

效率高 : 通过并发数据,hadoop节点之间动态并行的移动数据

可靠性 : 能自动维护数据的多份,如果计算任务失败后可以重新部署计算任务

4.Hadoop 集群的搭建

节点之间如何去通信? 如果主节点挂掉怎么版?

如果主节点挂掉 有个HA,主备关系

Hadoop分商业版(CDH) 还有社区版

搭建集群的注意事项

注意是两套集群 一个套是NameNode-DataNode 另一套是 resourceManage NodeManage

需要给自己本机也配置免密登陆 1. ssh node1 2. ssh-copy-id node-1

ls -al 显示所有隐藏文件 当输入vi指令需要按下回车键的时候,有个好像是以swap结尾的扩展名删除就可以了,出现这个问题的时候是因为在vi编辑指令的时候没有正常退出。

启动指令的注意事项 /sbin/, start-all.sh

出现下面的log错误的话 解决方案:将目录、dfs、name、data清空是重复启动到时key值不一样

Datanode Uuid unassigned) service to node-1/192.168.20.101:9000. Exiting.


6.第二天起来再次启动集群的时候会出现下面这个异常

org.apache.hadoop.hdfs.server.common.InconsistentFSStateException:

Directory does not exist?但是为什么刚装完时是存在的呢,抱着试试看的态度,再次执行。
hadoop namenode -format
执行之后再启动,namenode启动成功了,说明上面does not exist的目录在format namenode的时候重新建起来了,但是如果每次重启都要format namenode,
也太不靠谱了,不止是麻烦,更大的麻烦是里面的数据不能总被无情的delete掉啊,问题必须解决。
Directory /tmp/hadoop-javoft/dfs/name is in an inconsistent state: storage directory does not exist or is not accessible.
这 里的目录既然是在tmp下面的,回忆一下,tmp目录下的文件是临时文件会被定期删除的,貌似bug已经露出水面。那就重启计算机试试是不是因为这,
重启 之前检查一下tmp目录下面确定几个format namenode之后应该有的目录都有的,重启之后,发现全部被删掉。
在执行一次 start-dfs.sh,看到tmp目录下面建了一些目录,但是dfs/name目录仍然不存在,在start-dfs.sh时候建了一部分目录和文 件。
而dfs/name需要在hadoop namenode -format时建立。问题清楚了。
解决方案就很简单,这些目录的位置都是根据hadoop.tmp.dir的位置确定的,所以只需要在conf/core-site.xml覆盖hadoop.tmp.dir的默认值即可:
...
<property>
<name>hadoop.tmp.dir</name>
<value>/home/javoft/Documents/hadoop/hadoop-${user.name}</value>
<description>A base for other temporary directories.</description>
</property


具体搭建步骤如下 详细步骤

看我博客的朋友,请安装下面的步骤依次执行,如果在安装过程中出现问题,就去参照搭建集群的注意事项的问题 。

我下面的搭建属性是依次安装hadoop架构层次去搭建 hadoop 根目录下面 /etc/hadoop/ 是需要修改的配置文件

运行环境

1. CentOS 6.7
2. jdk 1.8
3. VMWare Pro 12
4. Hadoop 2.7.4 目前是最稳定版本,属于社区版


安装下面的需求去搭建集群

node-01 NameNode DataNode ResourceManager
node-02 DataNode NodeManager SecondaryNameNode
node-03 DataNode NodeManager


1. 第一步去配置java环境变量,因为在hadoop框架在运行的时候有可能会找不到jdk环境变量,这步不是必须而是为了确保

第一个:hadoop-env.sh

vi hadoop-env.sh
export JAVA_HOME=/root/apps/jdk1.8.0_65


2. 下面配置的是namenode节点所在的服务器,同时也配置HDFS文件系统所在的目录 很关键

第二个:core-site.xml

<!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址 -->
<property>
<name>fs.defaultFS</name>
<value>hdfs://node-1:9000</value>
</property>

<!-- 指定hadoop运行时产生文件的存储目录,默认/tmp/hadoop-${user.name} -->
<property>
<name>hadoop.tmp.dir</name>
<value>/home/hadoop/hadoop-2.7.4/tmp</value>
</property>


3. 下面是配置HDFS所产生的副本数,副本数默认是三个,以及secondarynamenode所在的服务器

第三个:hdfs-site.xml

<!-- 指定HDFS副本的数量 -->
<property>
<name>dfs.replication</name>
<value>2</value>
</property>

<property>
<name>dfs.namenode.secondary.http-address</name>
<value>node-2:50090</value>
</property>


4. 配置YARN集群的一些属性,标注resourceMangeer nodemanage

第四个:yarn-site.xml

<!-- 指定YARN的老大(ResourceManager)的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>node-21</value>
</property>

<!-- NodeManager上运行的附属服务。需配置成mapreduce_shuffle,才可运行MapReduce程序默认值:"" -->
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>


5. 配置Mapreduce分布式计算框架,并行移动计算

第五个:mapred-site.xml

mv mapred-site.xml.template mapred-site.xml
vi mapred-site.xml

<!-- 指定mr运行时框架,这里指定在yarn上,默认是local -->
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>


6. 配置datanode nodemanage 从节点的IP地址

第六个:slaves文件,里面写上从节点所在的主机名字

vi slaves
node-1
node-2
node-3


7.进行初始化操作,主要是初始化namenode节点,执行下面的指令后会在/home/hadoop/hadoop-2.7.4/tmp生成目录,这个目录就是dfs分布式文件系统目录,其他所有子节点也都会生成

hdfs namenode -format (hadoop namenode -format)


8.HDFS启动的详细介绍

HDFS 启动有两种 1. 节点单独启动 2. 统一启动 (一定要先启动HDFS 在去启动yarn)

9.节点单独启动

sbin/hadoop-daemon.sh start datanode|nodeManage|namenode|secondaryNode

需要去不同的节点去搞起 注意启动的时候通过jps 查看启动的节点进程,


10.节点单独启动

先启动HDFS
sbin/start-dfs.sh

再启动YARN
sbin/start-yarn.sh

全部启动
start-all.sh  // 上面两部合并

查看节点启动情况

使用jps命令验证
27408 NameNode
28218 Jps
27643 SecondaryNameNode
28066 NodeManager
27803 ResourceManager
27512 DataNode


11. 查看是否启动成功

关闭防护墙去查看 最好用Google浏览器
 http://192.168.20.101:50070 (HDFS管理界面)  //节点的IP是 namenode 端口号50070 http://192.168.20.101:8088 (MR管理界面)     // 节点的IP是 resourcemanger 端口号8088

运行上面的内容都能看界面出现代表运行成功


12. 查看 HDFS文件系统的界面一些内容



12. 查看 YARN插件运行状态



13.文件的上传到HDFS上面 从HDFS系统上面下载文件

从Linux本地上传到 HDFS文件系统

1. hadoop fs -mkdir /rui 在hdfs上面创建一个目录

2. hadoop fs -put /linux目录或文件 /rui 从Linux系统中上传目录或文件到 hfds上面的rui目录下面




查看文件HDFS客户显示的内容





Mapreduce jar包的运行并行计算

任务MR提交给YARN,YARN负责管理资源调度的问题

在 Hadoop 安装包的 hadoop-2.7.4/share/hadoop/mapreduce 下有官方自带
的 mapreduce 程序。我们可以使用如下的命令进行运行测试。
示例程序 jar:
hadoop-mapreduce-examples-2.7.4.jar
计算圆周率:
hadoop jar hadoop-mapreduce-examples-2.7.4.jar pi 20 50
关于圆周率的估算,感兴趣的可以查询资料 Monte Carlo 方法来计算 Pi 值。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mapreduce 集群 hadoop