Hadoop第一天

来源:互联网 发布:网络平台运行 编辑:程序博客网 时间:2024/06/08 06:40
1 hadoop 是什么  能干什么
    (1)Hadoop是一个开源的框架,可编写和运行分布式应用处理大规模数据,是专为离线和大规模数据分析而设计的,并不适合那种对几个记录随机读写的在线事务处理模式。Hadoop=HDFS(文件系统,数据存储技术相关)+ Mapreduce(数据处理),Hadoop的数据来源可以是任何形式,在处理半结构化和非结构化数据上与关系型数据库相比有更好的性能,具有更灵活的处理能力,不管任何数据形式最终会转化为key/value,key/value是基本数据单元。用函数式变成Mapreduce代替SQL,SQL是查询语句,而Mapreduce则是使用脚本和代码,而对于适用于关系型数据库,习惯SQL的Hadoop有开源工具hive代替。
    (2)Hadoop就是一个分布式计算的解决方案.

    hadoop能做什么?
     hadoop擅长日志分析,facebook就用Hive来进行日志分析,2009年时facebook就有非编程人员的30%的人使用HiveQL进行数据分析;淘宝搜索中    的 自定义筛选也使用的Hive;利用Pig还可以做高级的数据处理,包括Twitter、LinkedIn 上用于发现您可能认识的人,可以实现类似Amazon.com的协同过滤的推荐效果。淘宝的商品推荐也是!在Yahoo!的40%的Hadoop作业是用pig运行的,包括垃圾邮件的识别和过滤,还有用户特征建模。(2012年8月25新更新,天猫的推荐系统是hive,少量尝试mahout!)

         下面举例说明:

          设想一下这样的应用场景. 我有一个100M 的数据库备份的sql 文件.我现在想在不导入到数据库的情况下直接用grep操作通过正则过滤出我想要的内容。例如:某个表中 含有相同关键字的记录那么有几种方式,一种是直接用Linux的命令 grep 还有一种就是通过编程来读取文件,然后对每行数据进行正则匹配得到结果好了 现在是100M 的数据库备份.上述两种方法都可以轻松应对.
            那么如果是1G , 1T 甚至 1PB 的数据呢 ,上面2种方法还能行得通吗? 答案是不能.毕竟单台服务器的性能总有其上限.那么对于这种 超大数据文件怎么得到我们想要的结果呢?
            有种方法 就是分布式计算, 分布式计算的核心就在于 利用分布式算法 把运行在单台机器上的程序扩展到多台机器上并行运行.从而使数据处理能力成倍增加.但是这种分布式计算一般对编程人员要求很高,而且对服务器也有要求.导致了成本变得非常高.
            Haddop 就是为了解决这个问题诞生的.Haddop 可以很轻易的把 很多linux的廉价pc 组成 分布式结点,然后编程人员也不需要知道分布式算法之类,只需要根据mapreduce的规则定义好接口方法,剩下的就交给Haddop. 它会自动把相关的计算分布到各个结点上去,然后得出结果.
            例如上述的例子 : Hadoop 要做的事 首先把 1PB的数据文件导入到 HDFS中, 然后编程人员定义好 map和reduce, 也就是把文件的行定义为key,每行的内容定义为value , 然后进行正则匹配,匹配成功则把结果 通过reduce聚合起来返回.Hadoop 就会把这个程序分布到N 个结点去并行的操作.
            那么原本可能需要计算好几天,在有了足够多的结点之后就可以把时间缩小到几小时之内.


            这也就是所谓的 大数据 云计算了.如果还是不懂的话再举个简单的例子
            比如  1亿个  1 相加 得出计算结果, 我们很轻易知道结果是 1亿.但是计算机不知道.那么单台计算机处理的方式做一个一亿次的循环每次结果+1
            那么分布式的处理方式则变成 我用 1万台 计算机,每个计算机只需要计算 1万个 1 相加 然后再有一台计算机把 1万台计算机得到的结果再相加
            从而得到最后的结果.
            理论上讲, 计算速度就提高了 1万倍. 当然上面可能是一个不恰当的例子.但所谓分布式,大数据,云计算 大抵也就是这么回事了.


            hadoop能为我司做什么?
            零数据基础,零数据平台,一切起点都是0。


            日志处理
            用户细分特征建模
            个性化广告推荐
            智能仪器推荐
               一切以增加企业的商业价值为核心目的、最终目的
            怎么用hadoop
            hadoop的应用的在我司还属于研发型项目,拟用日志的分析来走通一次流程,因为此阶段目前来说还不需要数据挖掘的专业人员,在数据分析阶段即可,而系统有数据库工程师,Mapreduce有java开发工程师,而分析由我本人介入,而可视化暂时可由前端JS实现,本来我的调研方案,针对大数据的解决方案是hadoop+R的,但是对于R我们是完全不懂,在公司还没有大量投入人员的情况下,只有日志分析目前看来是最容易出成果的,也是可以通过较少人员能出一定成果的,所以选取了这个方向作为试点。
====================================================
2 hadoop 解决问题
    海量数据的存储(HDFS)namenode 和datenode
    海量数据的分析(MapReduce)
    资源管理调度(YARN)ResourceManager NodeManager
    
    namenode:
        接收用户操作请求
        维护文件系统的目录结构
        管理文件与block之间关系,block与datanode之间关系
    datenode:
        存储文件
        文件被分成block存储在磁盘上
        为保证数据安全,文件会有多个副本

3  伪分布模式安装步骤:
    关闭防火墙
    修改ip
    修改hostname
    设置ssh自动登录
    安装jdk
    安装hadoop
   ==
           1.准备Linux环境
            1.0点击VMware快捷方式,右键打开文件所在位置 -> 双击vmnetcfg.exe -> VMnet1 host-only ->修改subnet ip 设置网段:192.168.1.0 子网掩码:255.255.255.0 -> apply -> ok
                回到windows --> 打开网络和共享中心 -> 更改适配器设置 -> 右键VMnet1 -> 属性 -> 双击IPv4 -> 设置windows的IP:192.168.1.110 子网掩码:255.255.255.0 -> 点击确定
                在虚拟软件上 --My Computer -> 选中虚拟机 -> 右键 -> settings -> network adapter -> host only -> ok    
            1.1修改主机名
                vim /etc/sysconfig/network
                
                NETWORKING=yes
                HOSTNAME=itcast01    ###

            1.2修改IP
                两种方式:
                第一种:通过Linux图形界面进行修改(强烈推荐)
                    进入Linux图形界面 -> 右键点击右上方的两个小电脑 -> 点击Edit connections -> 选中当前网络System eth0 -> 点击edit按钮 -> 选择IPv4 -> method选择为manual -> 点击add按钮 -> 添加IP:192.168.1.119 子网掩码:255.255.255.0 网关:192.168.1.1 -> apply
            
                第二种:修改配置文件方式(屌丝程序猿专用)
                    vim /etc/sysconfig/network-scripts/ifcfg-eth0
                    
                    DEVICE="eth0"
                    BOOTPROTO="static"           ###
                    HWADDR="00:0C:29:3C:BF:E7"
                    IPV6INIT="yes"
                    NM_CONTROLLED="yes"
                    ONBOOT="yes"
                    TYPE="Ethernet"
                    UUID="ce22eeca-ecde-4536-8cc2-ef0dc36d4a8c"
                    IPADDR="192.168.1.44"       ###
                    NETMASK="255.255.255.0"      ###
                    GATEWAY="192.168.1.1"        ###
                    
            1.3修改主机名和IP的映射关系
                vim /etc/hosts
                    
                192.168.1.44    itcast01
            
            1.4关闭防火墙
                #查看防火墙状态
                service iptables status
                #关闭防火墙
                service iptables stop
                #查看防火墙开机启动状态
                chkconfig iptables --list
                #关闭防火墙开机启动
                chkconfig iptables off
            
            1.5重启Linux
                reboot
            
        2.安装JDK
            2.1上传
            
            2.2解压jdk
                #创建文件夹
                mkdir /usr/java
                #解压
                tar -zxvf jdk-7u55-linux-i586.tar.gz -C /usr/java/
                
            2.3将java添加到环境变量中
                vim /etc/profile
                #在文件最后添加
                export JAVA_HOME=/usr/java/jdk1.7.0_55
                export PATH=$PATH:$JAVA_HOME/bin
            
                #刷新配置
                source /etc/profile
        3.安装Hadoop
            3.1上传hadoop安装包
            
            3.2解压hadoop安装包
                mkdir /cloud
                #解压到/cloud/目录下
                tar -zxvf hadoop-2.2.0.tar.gz -C /cloud/
                
            3.3修改配置文件(5个)
                第一个:hadoop-env.sh
                #在27行修改
                export JAVA_HOME=/usr/java/jdk1.7.0_55
                
                第二个:core-site.xml
                <configuration>
                    <!-- 指定HDFS老大(namenode)的通信地址 -->
                    <property>
                            <name>fs.defaultFS</name>
                            <value>hdfs://itcast01:9000</value>
                    </property>
                    <!-- 指定hadoop运行时产生文件的存储路径 -->
                    <property>
                            <name>hadoop.tmp.dir</name>
                            <value>/cloud/hadoop-2.2.0/tmp</value>
                    </property>
                </configuration>
                
                第三个:hdfs-site.xml
                <configuration>
                    <!-- 设置hdfs副本数量 -->
                    <property>
                            <name>dfs.replication</name>
                            <value>1</value>
                    </property>
                </configuration>
                
                第四个:mapred-site.xml.template 需要重命名: mv mapred-site.xml.template mapred-site.xml
                <configuration>
                    <!-- 通知框架MR使用YARN -->
                    <property>
                            <name>mapreduce.framework.name</name>
                            <value>yarn</value>
                    </property>
                </configuration>
                
                第五个:yarn-site.xml
                <configuration>
                    <!-- reducer取数据的方式是mapreduce_shuffle -->
                    <property>
                        <name>yarn.nodemanager.aux-services</name>
                        <value>mapreduce_shuffle</value>
                    </property>
                </configuration>
            
            3.4将hadoop添加到环境变量
                vim /etc/profile
                
                export JAVA_HOME=/usr/java/jdk1.7.0_55
                export HADOOP_HOME=/cloud/hadoop-2.2.0
                export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin
            
                source /etc/profile
            3.5格式化HDFS(namenode)第一次使用时要格式化
                hadoop namenode -format
                
            3.6启动hadoop
                先启动HDFS
                sbin/start-dfs.sh
                
                再启动YARN
                sbin/start-yarn.sh
                
            3.7验证是否启动成功
                使用jps命令验证
                27408 NameNode
                28218 Jps
                27643 SecondaryNameNode
                28066 NodeManager
                27803 ResourceManager
                27512 DataNode
            
                http://192.168.1.44:50070  (HDFS管理界面)
                在这个文件中添加linux主机名和IP的映射关系
                C:\Windows\System32\drivers\etc\hosts
                192.168.1.119    itcast
                
                http://192.168.1.44:8088 (MR管理界面)
                
        4.配置ssh免登陆
            生成ssh免登陆密钥
            cd ~,进入到我的home目录
            cd .ssh/

            ssh-keygen -t rsa (四个回车)
            执行完这个命令后,会生成两个文件id_rsa(私钥)、id_rsa.pub(公钥)
            将公钥拷贝到要免登陆的机器上
            cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
            或
            ssh-copy-id -i localhost
0 0
原创粉丝点击