云计算学习

Hadoop 2.x深入浅出基础课程笔记
1、什么是Hadoop?
“谁说大象不能跳舞?!
Hadoop——轻松应对海量数据存储和分析所带来的挑战!“
1)海量数据存储,HDFS 分布式文件系统
2)海量数据分析,MapReduce 并行的离线计算框架

2、Hadoop项目的四大模块
Hadoop Common: The common utilities that support the other Hadoop modules.
Hadoop Distributed File System (HDFS™): A distributed file system that provides high-throughput access to application data.
Hadoop YARN: A framework for job scheduling and cluster resource management.
Hadoop MapReduce: A YARN-based system for parallel processing of large data sets.
2.1、YARN:”云的操作系统” – Hortonworks (Hadoop 商业版本的)
给部署在YARN上的应用,分配资源。
管理资源
JOB/APPLICATION 调度
Win7 ,XP:
QQ、YY、播放器等等,分配一些资源(CPU、内存、网络IO、磁盘IO等)
2.2、技能
1)云计算,Hadoop 2.x
2)服务总线,SOA/OSB,Dubble
3)全文检索,Lucunce、Solr、Nutch
2.3、Hadoop版本:
1)以0.20.x和1.x.x 版本为主
2)0.23.x 版本为主(开始出现YARN)
3)2.x.x 版本为主
3、编译Hadoop 2.x 源码
3.1、环境:
1)Linux 64 位操作系统,没有native lib本地库
官方提供的native库是32位的(2.5之前)
CentOS 6.4 版本,VMWare 搭建的虚拟机
Secure CRT
3)虚拟机可以联网
4、HDFS和YARN运行原理
NameNode和DataNode交互方式
1.DataNode会向NameNode发送心跳信息,接受以后,将命令以心跳返回给DataNode
2.DataNode每隔一段时间就会向NameNode发送一个块报告
3.

DFSClient:分布式文件系统客户端

SecondaryNameNode:辅助NameNode工作的
如果NameNode一旦关闭,那么内存中数据就会消失,下次启动就无法获取信息,NameNode启动后,会把MetaData写在本地的文件中,称为文件系统镜像文件FSImage。客户端对整个分布式文件系统的操作会写入日志文件中edits,记录你的操作。SecondaryNameNode定期的将FSImage和edits合并成一个元数据快照
YARN框架也是主从节点的框架
Container是资源的一个单位。
App Mstr:应用主节点(QQ自带的管理者)

离线计算框架MapReduce
Map阶段并行处理输入数据
Reduce阶段对Map阶段结果进行汇总
Shuffle链接Map和Reduce两个阶段
Map Task将数据写到本地磁盘
Reduce Task将从每个Map Task上读取一份数据
仅适合离线批处理

5、伪分布式安装
软件的安装目录:
/opt/modules/
安装:
0)说明
1、系统:CentOS 6.4 64位
2、关闭防火墙和SELinux
service iptables status
service iptables stop
chkconfig iptables off

        vi /etc/sysconfig/selinux          
        设置 SELINUX=disabled

    3、设置静态IP地址
        vi /etc/sysconfig/network-scripts/ifcfg-eth0

    4、修改HostName
        hostname hadoop-yarn.dragon.org       
        vi /etc/sysconfig/network

    5、IP与HostName绑定
        vi /etc/hosts
        内容:
            192.168.48.128  hadoop-yarn.dragon.org  hadoop-yarn
    6、安装JDK
        安装目录:/opt/modules/jdk1.6.0_45
        版本:jdk-6u45-linux-x64.bin
        命令:
            chmod u+x jdk-6u45-linux-x64.bin
            ./jdk-6u45-linux-x64.bin
        设置环境变量:
            vi /etc/profile
            添加内容:
                export JAVA_HOME=/opt/modules/jdk1.6.0_45
                export PATH=$PATH:$JAVA_HOME/bin
            生效:
                # source /etc/profile

1)解压tar包
    tar -zxvf hadoop-2.2.0.tar.gz -C /opt/modules/

2)安装目录
    HADOOP_HOME=/opt/modules/hadoop-2.2.0

3)配置
    1、hadoop-env.sh
        export JAVA_HOME=/opt/modules/jdk1.6.0_45

    2、yarn-env.sh(可以不用)
        export JAVA_HOME=/opt/modules/jdk1.6.0_45

    3、mapred-env.sh(可以不用)
        export JAVA_HOME=/opt/modules/jdk1.6.0_45

    4、core-site.xml
               
            fs.default.name
            hdfs://hadoop-yarn.dragon.org:8020
        

        
            hadoop.tmp.dir
            /opt/modules/hadoop-2.2.0/data/tmp
        

    5、hdfs-site.xml
              
            dfs.replication
            1
        

          
            dfs.namenode.name.dir  
            /opt/hadoop-2.2/hdfs/namenode  
          
          
            dfs.datanode.data.dir  
            /opt/hadoop-2.2/hdfs/datanode  
        

    6、yarn-site.xml
        
            yarn.nodemanager.aux-services
            mapreduce_shuffle
        

    7、mapred-site.xml
                              
            mapreduce.framework.name
            yarn
        
4)启动
    1、启动HDFS
    NameNode、DataNode、SecondaryNameNode
        * NameNode 格式化
            bin/hdfs namenode -format       -- 产生一个Cluster ID

            拓展:
                * 指定Cluster ID
                bin/hdfs namenode -format -clusterid yarn-cluster

                * Block Pool ID
                    数据块池ID

                * NameNode Fedaration
        (启动方式一)
        * 启动NameNode
            sbin/hadoop-daemon.sh start namenode
        * 启动DataNode
            sbin/hadoop-daemon.sh start datanode
        * 启动SecondaryNameNode
            sbin/hadoop-daemon.sh start secondarynamenode

    在浏览器中输入localhost:50070查看namenode
    在浏览器中输入localhost:50090查看secondarynamenode
    2、启动YARN
    ResourceManager、NodeManager
        * 启动ResourceManger
            sbin/yarn-daemon.sh start resourcemanager
        * 启动NodeManager
            sbin/yarn-daemon.sh start nodemanager
    在浏览器中输入localhost:8088查看YARN 的web界面

5)日志
    【hadoop】-【hadoop】-【namenode】-【hadoop-yarn.dragon.org】.【log】

      框架名称   用户名    服务名称    主机名            日志格式 
6)HDFS 操作错误
    信息:
        [root@hadoop-yarn hadoop-2.2.0]# bin/hdfs dfs -mkdir /test
        mkdir: Permission denied: user=root, access=WRITE, inode="/":hadoop:supergroup:drwxr-xr-x
    权限设置
        修改hdfs-site.xml 添加
        
            dfs.permissions
            false
        
    注意:在root下开启的进程,在切换到其他用户下是无效的,所以要保持用户的一致性

    运行在YARN上的hadoop自带的MapReduce小案例的运行:
    /bin/yarn jar /opt/hadoop-2.2/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.2.0.jar  wordcount  /Input /output
    运行MapReduce时有6类计数器 counter
    file system
    job
    mapreduce framework
    shuffle errors
    File input format
    file output format


7)启动历史服务器
    用于查看MapReduce 应用程序的历史运行情况
        sbin/mr-jobhistory-daemon.sh start historyserver
    netstat -tnlp|grep 19888

8)疑问:
    1、没有SSH 协议配置 ?

    2、启动方式  ?
        sbin/start-dfs.sh  
        sbin/start-yarn.sh
        sbin/start-all.sh

    方式一:逐一启动(但是实际项目中采用此种)
    hadoop-daemon.sh 

yarn-daemon.sh
方式二:分开启动(推荐)
start-dfs.sh start-yarn.sh
方式三:一起启动(不推荐 来自于hadoop1的启动方式)
start-all.sh

    注:hdfs 和yarn的启动分为安全模式和非安全模式
    hdfs getconf -namenodes
    得到namenode在哪台主机上
    如果要采用第二种启动方式则要配置SSH协议
    之前配置过SSH,现在需要关闭,root用户目录下.ssh文件夹。删除文件
    SSH公钥加密
    (1)远程主机接受到用户的请求,把自己的公钥发送给用户
    (2)用户使用这个公钥,将登录密码加密后,发送回来
    (3)远程主机用自己的私钥,解析登录密码,
    执行命令:ssh-keygen -t rsa
    [root@master ~]# ssh-keygen -t  rsa 
    Generating public/private rsa key pair. 
    Enter file in which to save the key (/root/.ssh/id_rsa):  & 按回车默认路径 & 
    Created directory '/root/.ssh'.  &创建/root/.ssh目录& 
    Enter passphrase (empty for no passphrase): 
    Enter same passphrase again: 
    Your identification has been saved in /root/.ssh/id_rsa. 
    Your public key has been saved in /root/.ssh/id_rsa.pub.
    通过以上命令将在/root/.ssh/ 目录下生成id_rsa私钥和id_rsa.pub公钥。
    [root@master .ssh]# cat id_rsa.pub > authorized_keys 
    将id_rsa.pub写入authorized_keys,配置完毕,可通过ssh 本机IP 测试是否需要密码登录:ssh localhost
    3、HDFS、YARN、MAPREDUCE 默认的配置
    MapReduce日志分为历史作业日志和Container日志(存放于logs/userlogs下)

1、云计算开发基础

Oracle:只能操作本地服务器,但是可以操做文件块,又称之为数据空间,可以位于不同的磁盘上,例如,安装在C盘,随着数据的增加,C盘饱满,可以放置到D盘,但是必须保证都在本地磁盘,本地机器上。

云计算:最大限度的发挥网络的资源

为什么要称之为云呢?为什么不叫互联网计算
大多数计算的网络拓扑图都是用一块云来表示互联网的,于是就有云计算的说法

云计算服务类型
1.基础设施即服务(IAAS):
提供很多计算机,存储器,I/O设备,带宽等计算机基础设备,集中起来称为一个虚拟的资源池来为整个网络提供服务。把东西放在我这边,需要时可以来这边提取。
典型代表:AppEngine(google)直接把程序部署到AppEngine上面
2.软件即服务(SAAS)
在本地通过某种方式就可以访问网络资源。
WebService:Google Earth Baidu Map
3.平台即服务(PAAS)
Hadoop,Amazon
4.管理服务提供商(MSP)
Amazon,Oracle,MicroSoft

通过把在本地开发的程序部署在AppEngine上面,来访问。了解IAAS服务
Google App Engine(GAE)提供了一个很好的Python和Java语言支持平台,可以让程序员们很容易的在Google的集群服务器上部署自己开发的各种网络应用程序
1.在Eclipse开发一个AppEngine项目
2.部署到谷歌的AppEngine.com上面,申请一个账号。
3.在AppEngine上面创建一个项目
4.将项目上传到Google的服务器上

操作步骤:
1.先从Eclipse下载eclipse安装包,版本有要求貌似4.2之后的在线安装plugin forEclipse都使用不了,选择了4.3版本,通过在eclipse的help-》Install new software ,在work with中输入URL: http://dl.google.com/eclipse/plugin/4.3 ,选择Google Plugin For Eclipse和Google App Engine java Sdk选项实现在线安装,重启之后会出现一个8字的Google图标,在eclispe中。在 Eclipse 中通过单击 New Web Application Project 按钮创建一个新项目;在显示的对话框中,不要勾选 Use Google Web Toolkit 选项。命名项目和您感兴趣的相应的包。
在层次结构中选择项目并单击 Deploy App Engine Project 按钮。
参见http://blog.zhe700.net/220.html
右键project,属性打开AppEngine,填写ApplicationId,即为之前创建project的ID

其他人的访问方式:
http://www.subtle-canto-108111.appspot.com/myproject_appengine
www.ApplicationId.appspot.com/project
lspci –vnn | grep 14e4
gedit ~/.bashrc
export JAVA_HOME
export JRE_HOME= JAVAHOMEjreexportCLASSPATH= {JAVA_HOME}/lib: JAVAHOME/libexportPATH= {JAVA_HOME}/bin:$PATH

HBase 配置

第一步:在系统环境中添加HBase
Vi /etc/profile
export HBASE_HOME=/opt/hbase-0.98.14
export JAVA_HOME=/usr/lib/jvm/jdk1.7
export HADOOP_HOME=/opt/hadoop-2.2
export JRE_HOME= JAVAHOME/jreexportCLASSPATH=.: {JAVA_HOME}/lib: JAVAHOME/libexportPATH= {JAVA_HOME}/bin: PATH: {HADOOP_HOME}/bin: HADOOPHOME/sbin: {HBASE_HOME}/bin

第二步:打开HBase的安装目录,修改配置文件,在conf目录下
第一个文件 Hbase-site.xml:


hbase.tmp.dir
/var/hbase


hbase.rootdir
hdfs://localhost:9000/hbase
注意:这里的value值必须与Hadoop的core-site.xml的
hdfs://hadoop-yarn.dragon.org:8020一致

    
    
        hbase.cluster.distributed
        true
    



第二个文件 Hbase-site.xml:
export JAVA_HOME=/usr/lib/jvm/jdk1.7
export HBASE_CLASSPATH=/opt/hadoop-2.2
export HBASE_LOG_DIR=/opt/hbase-0.98.14/logs
export HBASE_MANAGES_ZK=true

hbase的运行需要用到zookeeper,而hbase-0.98.*自带了zookeeper,所以可以使用hbase自带的zookeeper,在conf/hbase-env.sh 文件中  export HBASE_MANAGES_ZK=true  ,true表示使用hbase自带的zookeeper,如果不想使用其自带的zookeeper,自己下载包安装的化,该项设置为false。当然如果自己安装zookeeper,启动及关闭先后顺序为:启动Hadoop—>启动ZooKeeper集群—>启动HBase—>停止HBase—>停止ZooKeeper集群—>停止Hadoop

Hbase的启动(在自带zookeeper的情况下)
在启动完hadoop后
bin/start-hbase.sh
bin/hbase shell

你可能感兴趣的:(云计算)