你好,游客 登录 注册 搜索
背景:
阅读新闻

Hadoop 入门实践

[日期:2016-03-07] 来源:rainy  作者: [字体: ]

Hadoop 2.0 架构

  Hadoop 包括如下几个模块:

  Hadoop Common:公共基础组件;

  Hadoop Distributed File System(HDFS):分布式文件系统;

  Hadoop YARN:任务和资源管理框架;

  Hadoop MapReduce:基于YARN的并行数据处理系统;

  其它基于Hadoop的项目(包括Pig,Hive,Spark等)。

图片来源: Icons and Stencils for Hadoop

  了解基本架构之后先在本地安装一下最新版本的 Hadoop,我安装在阿里云服务器:

  Ubuntu 14.04.3 LTS

  Hadoop 单节点安装

  依赖

  Java 1.5.X

 

  ssh

wget http://javadl.oracle.com/webapps/download/AutoDL?BundleId=116021  
mv AutoDL\?BundleId=116021 jre-7u7-linux-x64.tar.gz  
tar zxvf jre-7u7-linux-x64.tar.gz

sudo mkdir -p /usr/java  
sudo cp -r jre1.8.0_73/* /usr/java/

export JAVA_PATH=/usr/java  

下载 Hadoop

wget http://mirror.bit.edu.cn/apache/hadoop/common/hadoop-2.6.4/hadoop-2.6.4.tar.gz  
tar zxvf hadoop-2.6.4.tar.gz  
cd hadoop-2.6.4

export HADOOP_INSTALL=/path/to/hadoop-2.6.4  
export PATH=$PATH:$HADOOP_INSTALL/bin:$HADOOP_INSTALL/sbin  

  三种集群模式

  Hadoop 共有三种模式,运行前需要先了解它们的差别:

  单机(本地)模式

  伪分布式模式

  完全分布式模式

  单机模式只是运行一次 MapReduce 程序,不生成 daemon,适合调试程序;伪分布式模式 daemon 运行在本地,只是模拟集群;完全分布式的 daemon 运行在多个机器上。

  文章开始介绍的 Hadoop 架构中提到两个主要模块:HDFS 和 YAEN,运行 Hadoop 前需要分别对其进行配置,在配置之前需要先了解一下它们分别是什么。

  HDFS & YARN 配置

  HDFS

  HDFS 是基于 Google File System(GFS) 的一种实现,由 Java 实现的一种分布式、可扩展、可移植的文件系统。HDFS 由两部分组成:

  NameNode:主机(master machine),用于管理所有集群数据的元数据;

  DataNode:HDFS 中真正用于保存数据的部分,通常包含多个DN;

  除此之外,在多节点集群模式下,还配备一个 Secondary NameNode,用于生成主机数据操作的缓存镜像,结构如下图所示:

  *图片来源:见参考1*

 

  选择伪分布式模式,我们先配置启动 HDFS。由于需要用到 ssh ,先对本机设置ssh 无密码登录模式:

cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys  
ssh localhost  

创建新的配置目录:

mkdir init_config  
cp $HADOOP_INSTALL/etc/hadoop/\*.xml init_config/  

编辑 init\_config/core-site.xml 和 init\_config/hdfs-site.xml :

<!-- core-site.xml -->  
<configuration>  
  <property>
    <name>fs.default.name</name>
    <value>hdfs://localhost:9000</value>
  </property>
</configuration>  
<!-- hdfs-site.xml -->  
<configuration>  
  <property>
    <name>dfs.replication</name>
    <value>1</value>
  </property>
</configuration>  

格式化HDFS,然后运行启动脚本:

hadoop namenode -format  
start-dfs.sh --config /absolute/path/to/init_config

# 遇到错误
# localhost: Error: JAVA_HOME is not set and could not be found.
# 可能与我用 zsh 有关,JAVA_HOME 已设置在 ~/.zshrc
# 解决方案
cp $HADOOP_INSTALL/etc/hadoop/hadoop-env.sh init_config/  
# 编辑 init_config/hadoop-env.sh
export JAVA_HOME=/usr/java  

启动之后,可以从通过浏览器访问 http://localhost:50070 

YARN

YARN 还是基于 Google MapReduce 的实现,具体 MapReduce 的原理有时间可以研究一下这篇论文。 MapReduce 的基本过程如下:

(input) <k1, v1>->map-><k2, v2>->combine-><k2, v2>->reduce-><k3, v3> (output)

map/reduce 的过程对数据进行分块并行处理,而 Hadoop 提供的 YARN 框架由JobTracker 和 TaskTracker 两部分组成,输入和输出都是来自/存入 HDFS,YARN 只是负责调度和监控,其架构如下图所示:

*图片来源:见参考1*

要启动 YARN 同样需要配置 init\_config/yarn-site.xml :

<!-- yarn-site.xml -->  
<configuration>  
  <property>
    <name>yarn.resourcemanager.address</name>
    <value>localhost:8032</value>
  </property>
  <property>
    <name>yarn.nodemanager.aux-services</name>
    <value>mapreduce.shuffle</value>
  </property>
</configuration>  

之后运行:

start-yarn.sh --config /absolute/path/to/init_config

# 若出现 cat: /path/to/init_config/slaves: No such file or directory
# 则需要从 $HADOOP_INSTALL/etc/hadoop/ 中 copy 过来。

启动成功之后同样可以通过 http://localhost:8088 访问 Web 管理界面:

  总结

  到此为止已经完成了 Hadoop 单机节点下的伪分布式模式的启动,接下来需要分别学习:

  HDFS 的一些指令操作以及 Web 管理界面

  MapReduce 原理

  基于 Python 的 MapReduce 数据操作以及 YARN 的 Web 管理界面

 

  Hadoop 负责数据的存储于基本处理,HDFS 与 MapReduce 分别实现 数据存储 于处理过程 的分布式并行加工。有了数据基础之后,才可以进一步应用到机器学习模型中,或者是实现更加高效的查询或计算,这就需要后续更多基于 Hadoop 之上的应用,例如 Pig/Hive/Spark。





收藏 推荐 打印 | 录入:elainebo | 阅读:
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款