2014-11-07---Hadoop的基础学习(一)---Hadoop2的入门与其伪分式的搭建
2014-11-07---Hadoop的基础学习(一)---Hadoop2的入门与其伪分式的搭建
查封炉台 发表于3年前
2014-11-07---Hadoop的基础学习(一)---Hadoop2的入门与其伪分式的搭建
  • 发表于 3年前
  • 阅读 599
  • 收藏 18
  • 点赞 1
  • 评论 0

【腾讯云】买域名送云解析+SSL证书+建站!>>>   

摘要: What Is Apache Hadoop? The Apache™ Hadoop® project develops open-source software for reliable, scalable, distributed computing. 解决问题:海量数据的存储(HDFS),海量数据的分析(MapReduce),资源管理调度(YARN) 作者:Doug Cutting.受Google三篇论文的启发(GFS、MapReduce、BigTable)

1.Hadoop生态体系图

1. 这一切是如何开始的—Web上庞大的数据!
2. 使用Nutch抓取Web数据
3. 要保存Web上庞大的数据——HDFS应运而生
4. 如何使用这些庞大的数据?
5. 采用Java或任何的流/管道语言构建MapReduce框架用于编码并进行分析
6. 如何获取Web日志,点击流,Apache日志,服务器日志等非结构化数据——fuse,webdav, chukwa, flume, Scribe
7. Hiho和sqoop将数据加载到HDFS中,关系型数据库也能够加入到Hadoop队伍中
8. MapReduce编程需要的高级接口——Pig, Hive, Jaql.
9. 具有先进的UI报表功能的BI工具- Intellicus
10. Map-Reduce处理过程使用的工作流工具及高级语言
11. 监控、管理hadoop,运行jobs/hive,查看HDFS的高级视图—Hue,karmasphere,eclipse plugin,cacti,ganglia
12. 支持框架—Avro (进行序列化), Zookeeper (用于协同)
13. 更多高级接口——Mahout, Elastic map Reduce
14. 同样可以进行OLTP——Hbase

2.Hadoop的简介

Hadoop是一个分布式系统基础架构,由Apache基金会开发。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力高速运算和存储。简单地说来,Hadoop是一个可以更容易开发和运行处理大规模数据的软件平台。
实际场景:海量日志如何处理,海量网页数据如何处理
hdfs  解决了海量数据的分布式存储,高可靠,易扩展,高吞吐量
mapreduce   解决了海量数据的分析处理,通用性强,易开发,健壮性

                             

Common:一组分布式文件系统和通用I/O的组件与接口(序列化、Java RPC和持久化数据结构)。
MapReduce:分布式数据处理模型和执行环境,运行于大型商用机集群。
HDFS:分布式文件系统,运行于大型商用机集群。
Zookeeper:一个分布式、可用性高的协调服务,提供分布式锁之类的基本服务用于构建分布式应用。
HBase:一个分布式、按列存储数据库,使用HDFS作为底层存储,同时支持MapReduce的批量式计算和点查询(随机读取)。
Pig:一种数据流语言和运行环境,用以检索非常大的数据集,运行在MapReduce和HDFS的集群上。
Hive:一个分布式、按列存储的数据仓库,管理HDFS中存储的数据,并提供基于SQL的查询语言(由运行时引起翻译成MapReduce作业)用以查询数据。
Mahout:一个在Hadoop上运行的可扩展的机器学习和数据挖掘类库(例如分类和聚类算法)。
Avro:一种支持高效、跨语言的RPC以及永久存储数据的序列化系统。
Sqoop:在数据库和HDFS之间高效传输数据的工具。

最底层平台 hdfs   yarn  mapreduce  spark
应用层     hbase  hive pig  sparkSQL  nutch 
工具类     zookeeper  flume

3.集中存储和运算的瓶颈

4.云计算中的虚拟化和Hadoop技术上的区别

5.如何解决海量存储----HDFS的简单概念

    普通的NFS和HDFS的区别以及其各自的特点

1. 优点:透明性,编程方便,容易,只须open,close,fread一些库的操作。
2. 缺点:无数据冗余性,所有数据在一台机器上,数据复制时,可能有带宽限制。
   HDFS就是为克服NFS的缺点,进行设计.存储可靠,读取方便,且与mapreduce整合到一起.可伸缩性强,高度可配置(一堆的配置文件).支持web接口:http://namenode-name:50070/流量文件系统.同时支持shell界面操作.

HDFS的整体架构图:详解见以后博客

   

       HDFS在官方文档中的架构

6.搭建Hadoop伪分布式集群

      什么是伪分布式集群:

环境准备: 虚拟机:VMware 10
         操作系统:CentOS 6
         JDK:1.7
         Hadoop:2.4
         客户端访问工具:secureCRT
         用户名:hadoop

6.1 前期网络环境准备
    在vmware中更改了虚拟机的网络类型,--->NAT方式,(虚拟交换机的ip可以从vmvare的edit-->vertual network editor看到)
    根据这个交换机(网关)的地址,来设置我们的客户端windown7的ip(Vmnet8这块网卡)
    启动linux主机,修改linux系统的ip地址(通过图形界面修改),修改完成之后在terminal(命令行终端)中切换到root用户执行命令重启网络服务来让ip生效
    修改主机名: 在root身份下,用命令修改  vi /etc/sysconfig/network   把hostname改为  yun-10-1
    添加主机名和ip的映射  在root身份下 vi /etc/hosts  添加一行 192.168.2.100	yun-10-1
    讲hadoop这个用户添加到sudoers里面去  在root身份下 vi /etc/sudoers,在文件中找到 root  ALL=ALL ALL ,下面加一行hadoop的
    停止防火墙服务   在root身份下 service iptables stop
    关闭防火墙的自动启动   在root身份下   chkconfig iptables off
    reboot命令重启机器
    用ping命令检测一下windows主机和linux服务器之间的网络连通性
    进入linux修改图形界面启动配置,不要再启动图形界面了,在root身份下,  vi /etc/inittab  将其改为id:3:initdefault:
    再次reboot,将不会启动到图形界面了 
(当以后你想启动图形界面的时候可以在命令行下敲startx (init 5) ,在图形界面下你想关闭图形界面,敲命令init 3)

6.2 安装JDK
    用终端连接linux服务器进行软件的安装(用secureCRT来连接ALT+P)
    安装jdk
	--用filezilla工具上传jdk的压缩包
	--解压jdk的压缩包到一个专门的安装目录下  /home/hadoop/app
	--在hadoop的主目录下敲命令 tar -zxvf jdk-7u65-linux-i586.tar.gz -C ./app
	--配置java的环境变量 sudo vi /etc/profile
          在文件的最后添加:
		export JAVA_HOME=/home/hadoop/app/jdk1.7.0_65
	        export PATH=$PATH:$JAVA_HOME/bin
         --让配置生效,  source /etc/profile
         --Javac,Java -version检测

6.3 安装Hadoop以及配置相关信息
    a.用secureCRT工具上传hadoop的安装包
    b.把hadoop解压到app目录中去   tar -zxvf hadoop-2.4.1.tar.gz -C ./app/
    c.修改hadoop的5大配置文件,位置在 /home/hadoop/app/hadoop-2.4.1/etc/hadoop目录
    d.配置一下hadoop的环境变量  sudo vi /etc/profile

----vi hadoop-env.sh  改其中的JAVA_HOME为我们安装jdk的路径JAVA_HOME=/home/hadoop/app/jdk1.7.0_65

----vi   core-site.xml   
   <configuration>
        <property>
            <name>fs.defaultFS</name>
            <value>hdfs://yun-10-1:9000</value>
        </property>
        <property>
            <name>hadoop.tmp.dir</name>
            <value>/home/hadoop/app/hadoop-2.4.1/tmp</value>
        </property>
    </configuration>

----vi   hdfs-site.xml
    <configuration>
        <property>
            <name>dfs.replication</name>
            <value>1</value>
        </property>
     </configuration>

-- 先修改文件名   mv mapred-site.xml.template mapred-site.xml
   在编辑  vi mapred-site.xml
           <configuration>
                <property>
                    <name>mapreduce.framework.name</name>
                    <value>yarn</value>
                </property>
            </configuration>

-- vi yarn-site.xml
        <configuration>
           <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>yun-10-1</value>
           </property>
            <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
            </property>
        </configuration>

测试Hadoop伪分布式:格式化HDFS,启动HDFS,Yarn,进程查看以及网页浏览.
测试时主机名改为yun10-0.结果证明测试,成功!!!

7.SSH协议详解和流程使用

   见另外博客地址.http://my.oschina.net/codeWatching/blog/342253

8.搭建环境过程中的问题

Vmware中Clone虚拟机后提示"No such device eth0"解决
方法1:直接删除配置文件     
直接删除配置文件,重启之后Linux就会找到新的网卡了。
 
sudo rm /etc/udev/rules.d/70-persistent-net.rules
 
重启后如果网卡起不来,删除/etc/sysconfig/networking-scripts/ifcfg-eth0的如下行,或者修改为vmware分配的新MAC地址:
HWADDR="XX:XX:XX:XX:XX:XX"
 
重启网卡 service network restart
 
方法2:修正配置文件
 
修改配置文件,将原本的eth0删除,然后修改eth1的NAME="eth1"为NAME="eth0",重启之后Linux就会使用新的配置文件设置网卡了。
 
修改前的 /etc/udev/rules.d/70-persistent-net.rules 像这样:
 
# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:50:XX:XX", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
 
# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:85:XX:XX", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"
 
删除掉eth0那一行,保留余下的行:
 
# PCI device 0x1022:0x2000 (pcnet32)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:0c:29:85:XX:XX", ATTR{dev_id}=="0x0", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

end...................................................................

  • 打赏
  • 点赞
  • 收藏
  • 分享
共有 人打赏支持
粉丝 49
博文 56
码字总数 138491
×
查封炉台
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: