前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Hadoop数据分析平台项目实战(基于CDH版本集群部署与安装)

Hadoop数据分析平台项目实战(基于CDH版本集群部署与安装)

作者头像
别先生
发布2018-04-19 18:54:08
1.7K0
发布2018-04-19 18:54:08
举报
文章被收录于专栏:别先生别先生

1、Hadoop的主要应用场景:   a、数据分析平台。   b、推荐系统。   c、业务系统的底层存储系统。   d、业务监控系统。

2、开发环境:Linux集群(Centos64位)+Window开发模式(window10,64位操作系统)。    使用技术:hadoop,hbase,hive,flume,oozie,sqoop,nginx,tomcat,spring,mybatis,springmvc,mysql等等。Hdfs为海量的数据提供存储,MapReduce为海量的数据提供计算。      此项目使用CDH(Cloudera Distribution Hadoop)版本,是Cloudera公司对其商业化改进和更新,CDH官网:http://cloudera.com 3、开发版本:

  a、hadoop2.5.0-cdh5.3.6版本;

  (之前cdh版本下载地址:http://archive.cloudera.com/cdh5/cdh/5/或者http://archive.cloudera.com/cdh4/cdh/4/),cdh版本的文档:http://archive.cloudera.com/cdh5/cdh/5/hadoop-2.5.0-cdh5.3.6/

  如果是在apache的官网下载之前的版本,地址如下所示:http://archive.apache.org/dist/hadoop/common/,文档查看如:http://hadoop.apache.org/docs/

  b、hbase-0.98.6-cdh5.3.6版本。

  c、zookeeper-3.4.5-cdh5.3.6版本。

4、Hadoop集群分布式(完全分布式模式)环境搭建:

代码语言:javascript
复制
安装步骤:
    a、创建用户,使用hadoop用户,注意自己配置好自己的网络,这点很重要。
        步骤(注意root用户密码):
            1)、使用useradd hadoop添加用户。
            2)、使用passwd hadoop设置用户密码,密码为hadoop;
            3)、给用户赋予使用sudo命令的权限。
            4)、chmod u+w /etc/sudoers。
            5)、vim /etc/sudoers。由于root用户对此文件也没有修改权限,所以先赋予权限,修改完毕再删除权限。
            6)、在root ALL=(ALL)ALL下面加上一行如下所示:
                hadoop ALL=(ALL)ALL。注意,分隔的是制表符。
            7)、chmod u-w /etc/sudoers。
    b、修改主机名以及ssh免密码登陆。
        注意:由于以后操作都是使用hadoop用户,所以必须使用hadoop用户登陆进行免密码配置,但是使用root还不是免密码登陆的。
        步骤(使用hadoop用户登陆):
            1)、使用sudo hostname slaver1修改主机名,当前生效,重启后失效。
            2)、使用sudo vim /etc/sysconfig/network修改主机名,重启生效。
            3)、在sudo vim /etc/hosts文件中添加主机名称对应的ip地址。
                注意,将其他集群的主机名称和对应的Ip地址都添加到三台机器,不然无法ping通。
                192.168.19.131 slaver1
                192.168.19.132 slaver2
                192.168.19.133 slaver3
            4)、使用ssh-keygen -t rsa生成ssh密钥。
                注意:普通用户生成的密钥对是在~/.ssh目录下面,root用户是在/root/.ssh目录下面,一定区分清楚。
            5)、进入.ssh文件夹,创建authorized_keys文件,并且将id_rsa.pub的内容添加到文件中去,修改文件权限为600(必须)
                注意:普通用户是在~/.ssh目录下。root用户是在/root/.ssh目录下面。
                [hadoop@slaver1 .ssh]$ scp authorized_keys slaver2:~/.ssh/
                [hadoop@slaver1 .ssh]$ scp authorized_keys slaver3:~/.ssh/
            6)、ssh slaver1验证是否配置免密码登陆成功。
                ssh slaver2
                ssh slaver3
    c、jdk的安装。
        1)、复制jdk的tar压缩包到/home/hadoop/package文件夹中。
        2)、解压缩操作:
            [hadoop@slaver1 package]$ tar -zxvf jdk-7u79-linux-x64.tar.gz -C /home/hadoop/soft/
        3)、创建软连接(可创建或者不创建,创建软连接,方便记忆):
            [hadoop@slaver1 package]$ sudo ln -s /home/hadoop/soft/jdk1.7.0_79/ /usr/local/jdk
        4)、配置相关的环境变量:
            针对用户生效:[hadoop@slaver1 package]$ vim ~/.bash_profile
            全局生效(此处使用这个):[hadoop@slaver1 package]$ sudo vim /etc/profile
                在文件最下面添加如下所示内容:
                export JAVA_HOME=/home/hadoop/soft/jdk1.7.0_79
                export PATH=$PATH:$JAVA_HOME/bin
        5)、保存文件,使环境变量生效:
            [hadoop@slaver1 package]$ source /etc/profile
        6)、验证jdk是否安装成功:
            [hadoop@slaver1 package]$ java
            [hadoop@slaver1 package]$ javac
            [hadoop@slaver1 package]$ java -version
            [hadoop@slaver1 package]$ javac -version
    d、hadoop的安装。
        步骤:
            1)、下载hadoop安装包并复制到/home/hadoop/package文件夹中。
            2)、解压缩操作。并创建数据保存文件hdfs。
                [hadoop@slaver1 package]$ tar -zxvf hadoop-2.5.0-cdh5.3.6.tar.gz -C /home/hadoop/soft/
                [hadoop@slaver1 hadoop-2.5.0-cdh5.3.6]$ mkdir hdfs
            3)、配置hadoop-env.sh,mapred-env.sh,yarn-env.sh文件。
                hadoop-env.sh文件修改如下所示:
                    export JAVA_HOME=/home/hadoop/soft/jdk1.7.0_79
                    完全分布式需要指定hadoop的pid路径:
                    export HADOOP_PID_DIR=/home/hadoop/soft/hadoop-2.5.0-cdh5.3.6/hdfs/tmp
                yarn-env.sh文件修改如下所示:    
                    export JAVA_HOME=/home/hadoop/soft/jdk1.7.0_79
                    由于没有默认的,所以手动创建:
                    export YARN_PID_DIR=export HADOOP_MAPRED_PID_DIR=/home/hadoop/soft/hadoop-2.5.0-cdh5.3.6/hdfs/tmp
                mapred-env.sh。
                    export HADOOP_MAPRED_PID_DIR=/home/hadoop/soft/hadoop-2.5.0-cdh5.3.6/hdfs/tmp
            4)、配置基本环境变量core-site.xml文件。
                <configuration>
                <!-- 指定HADOOP所使用的文件系统schema(URI),HDFS的老大(NameNode)的地址,master即是namenode所在的节点机器,9000是端口号,NameNode是为客户提供服务的,NameNode知道每一个文件存在哪一个datanode上面 -->
                        <property>
                                <name>fs.defaultFS</name>
                                <value>hdfs://slaver1:9000</value>
                                <--<value>hdfs://slaver1:8020</value>-->
                        </property>
                        <!-- 指定hadoop运行时产生文件的存储目录 -->
                        <property>
                                <name>hadoop.tmp.dir</name>
                                <value>/home/hadoop/soft/hadoop-2.5.0-cdh5.3.6/hdfs/tmp</value>
                        </property>
                </configuration>
            5)、配置hdfs相关变量hdfs-site.xml文件。
                <configuration>
                    <!-- 指定HDFS副本的数量,副本的数量,避免一个机器宕掉了,数据丢失,默认是3个副本 -->
                    <property>
                        <name>dfs.replication</name>
                        <value>2</value>
                    </property>
                    <property>
                        <name>dfs.namenode.name.dir</name>
                        <value>/home/hadoop/soft/hadoop-2.5.0-cdh5.3.6/hdfs/name</value>
                    </property>
                    <property>
                    <name>dfs.namenode.data.dir</name>
                    <value>/home/hadoop/soft/hadoop-2.5.0-cdh5.3.6/hdfs/data</value>
                    </property>
                    <!-- 指定SecondNameNode在那台机器上面启动 -->
                    <property>
                        <name>dfs.secondary.http.address</name>
                        <value>slaver1:50090</value>
                    </property>
                </configuration>

            6)、配置mapred相关环境变量mapred-site.xml文件。
                复制操作:
                    [hadoop@slaver1 hadoop]$ cp mapred-site.xml.template mapred-site.xml;
                修改内容如下所示:    
                    <configuration>
                    <!-- 指定mr运行在yarn上,即mapreduce运行在yarn上面 -->
                        <property>
                             <name>mapreduce.framework.name</name>
                             <value>yarn</value>
                        </property>

                    </configuration>    
            7)、配置yarn相关环境变量yarn-site.xml文件。
                <configuration>
                    <!-- Site specific YARN configuration properties -->
                    <!-- 指定YARN的老大(ResourceManager)的地址,这个地方主要看自己的机器分配情况,如果是四台机器,这个value值就>是第四台的主机名称哦, -->
                    <property>
                        <name>yarn.resourcemanager.hostname</name>
                        <value>slaver1</value>
                    </property>
                    <!-- reducer获取数据的方式 -->
                    <property>
                        <name>yarn.nodemanager.aux-services</name>
                        <value>mapreduce_shuffle</value>
                    </property>
                </configuration>

            8)、配置datanode相关变量slaves文件。
                slaver2
                slaver3
            9)、配置hadoop相关环境变量。
                export JAVA_HOME=/home/hadoop/soft/jdk1.7.0_79
                export HADOOP_HOME=/home/hadoop/soft/hadoop-2.5.0-cdh5.3.6
                export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
                刷新配置文件:
                    [hadoop@slaver1 hadoop]$ source /etc/profile
                验证是否配置成功:
                    [hadoop@slaver1 hadoop]$ hadoop version
            10)、将slaver1机器上面的hadoop复制到slaver2机器和slaver3机器:
                [hadoop@slaver1 soft]$ scp -r hadoop-2.5.0-cdh5.3.6/ slaver2:/home/hadoop/soft/
                [hadoop@slaver1 soft]$ scp -r hadoop-2.5.0-cdh5.3.6/ slaver3:/home/hadoop/soft/
            11)、hadoop的启动步骤:
                a、第一次启动hadoop之前需要格式化namenode节点,命令为hadoop namenode -format:
                    [hadoop@slaver1 soft]$ hadoop namenode -format
                b、两个方式启动start-all.sh或者start-dfs.sh,start-yarn.sh。
                    [hadoop@slaver1 soft]$ start-all.sh
                    或者:
                    [hadoop@slaver1 soft]$ start-dfs.sh
                    [hadoop@slaver1 soft]$ start-yarn.sh
                c、查看是否启动成功。
                    注意:启动过程中出现slaver1主节点的ResourceManager未启动异常情况,解决方法是在yarn-site.xml文件中修改如下所示,注意,slaver1是主节点的主机名称:
                        <property>
                            <name>yarn.resourcemanager.hostname</name>
                            <value>slaver1</value>
                        </property>
                    验证如下所示,然后查看节点的启动情况,通过jps命令查看hadoop的进程是否启动:
                        [hadoop@slaver1 hadoop]$ jps
                        [hadoop@slaver2 hadoop]$ jps
                        [hadoop@slaver3 hadoop]$ jps
                    网页查看如下所示,查看web界面是否显示正常信息内容:
                        查看分布式文件系统,http://slaver1:50070/
                        查看MapReduce,http://slaver1:8088/
            验证hadoop对应的yarn(mapreduce)框架是否启动成功,直接运行hadoop自带的example程序即可;
              [hadoop@slaver1 hadoop]$ echo "i like learn bigdata!" >> /home/hadoop/data_hadoop/test.txt
              [hadoop@slaver1 hadoop]$ hadoop dfs -put /home/hadoop/data_hadoop/test.txt /
              [hadoop@slaver1 hadoop]$ hadoop dfs -ls /
              [hadoop@slaver1 mapreduce]$ hadoop jar hadoop-mapreduce-examples-2.5.0-cdh5.3.6.jar wordcount /test.txt /output
              注意:如果上面执行失败或者卡着不动,检查是否是进程宕掉了。
              [hadoop@slaver1 mapreduce]$ hadoop fs -cat /user/hadoop/output/part-r-00000查看统计的内容;

 5、Hadoop Shell命令简单描述:

代码语言:javascript
复制
hadoop的shell命令主要分为两类,一类是启动命令,一类是控制和操作命令(hdfs/mapred/yarn)。其中启动命令位于sbin目录下面,控制和操作命令主要位于bin目录下面。其实最终的启动命令也是调用控制命令来进行集群服务的启动,区别在于启动命令中需要使用ssh的相关命令来控制其他机器启动服务,而控制和操作命令主要是直接调用hadoop提供的服务类接口。
1)、查看hdfs可以跟的命令,查看hadoop可以跟的命令:
    [hadoop@slaver1 mapreduce]$ hdfs    
    [hadoop@slaver1 mapreduce]$ hadoop
2)、hdfs命令(hdfs dfs),和hadoop命令,显示文件夹的内容:
    [hadoop@slaver1 mapreduce]$ hadoop fs -ls /
    如果递归显示文件夹的内容如下所示-lsr是递归显示:
    [hadoop@slaver1 mapreduce]$ hadoop fs -lsr /
    [hadoop@slaver1 mapreduce]$ hdfs dfs -ls /
    如果递归显示文件夹的内容如下所示-lsr是递归显示:
    [hadoop@slaver1 mapreduce]$ hdfs dfs -ls -R /
    [hadoop@slaver1 mapreduce]$ hdfs dfs -lsr /    
3)、hdfs命令查看命令帮助:
    [hadoop@slaver1 mapreduce]$ hdfs dfs -help ls
4)、hdfs命令,创建文件夹:
    [hadoop@slaver1 mapreduce]$ hdfs dfs -mkdir -p /201804/20180405
    -p参数指定当需要创建文件夹存储,那么不报错,默认情况会报错。另外一个作用就是递归创建文件夹。如果我们给定的路径不是以/开始的,那么表示在当前用户目录下创建文件夹。(默认情况下是没有当前用户目录的,那么就会报错)
5)、hdfs命令,上传文件到HDFS。-put,-copyFromLocal,-moveFromLocal。
    [hadoop@slaver1 data_hadoop]$ hdfs dfs -put test.txt /201804/20180405
    本地路径可以指定文件夹或者多个文件,hdfs上的路径必须是根据上传东西的不同,有不同的要求:
        a、本地指定的是文件夹,那么hdfs如果目录不存在,就新建目录然后将本地文件夹内容copy过去。hdfs目录存在,则将文件夹copy过去。
        b、本地指定的是单个文件,那么要求hdfs上指定的文件不存在。
        c、本地指定的多个文件,那么要求hdfs上指定的文件夹存在。
6)、hdfs命令,下载文件。-get,-copyToLocal,-moveToLocal。
    [hadoop@slaver1 data_hadoop]$ hdfs dfs -get /201804
7)、hdfs命令,查看文件内容:
    [hadoop@slaver1 data_hadoop]$ hdfs dfs -cat /test.txt
    [hadoop@slaver1 data_hadoop]$ hdfs dfs -text /test.txt
    cat命令和text命令都可以查看文件内容,但是他们的内置机制不一样,cat是copy文件内容,然后显示。text是通过hadoop解析将文件内容转换为文本内容,然后再显示。cat命令只适合看一半的文本文件,而text命令可以看出所有文件。
8)、hdfs命令删除文件。
    [hadoop@slaver1 data_hadoop]$ hdfs dfs -rm -R /201804
    [hadoop@slaver1 data_hadoop]$ hdfs dfs -rmdir /201804/20180405
    区别:rm和rmdir的区别主要是,rm可以删除任何文件/文件夹。rmdir只能删除空的文件夹。
9)、hdfs命令,fsck命令。
    fsck命令是检测hdfs磁盘文件是否有丢失备份异常等信息,可以查看到具体的文件是否处于健康情况,执行命令为hdfs -fsck 文件路径。
    [hadoop@slaver1 data_hadoop]$ hdfs fsck /201804
    [hadoop@slaver1 data_hadoop]$ hdfs fsck -help    
10)、hdfs命令,dfsadmin命令汇报集群信息。
    a、参数-report
        可以通过该命令查看集群的基本信息,包括总磁盘大小,剩余磁盘大小,丢失块个数等总的集群信息。
        [hadoop@slaver1 data_hadoop]$ hdfs dfsadmin -report
    b、参数-safemode<enter | leave | get | wait>
        当集群中的文件备份出现丢失的时候,可能会进行安全模式。安全模式是指当集群处于该状态下,hdfs解决文件IO操作。我们可以通过该命令强制离开安全模式。
        [hadoop@slaver1 data_hadoop]$ hdfs dfsadmin -safemode get
11)、hdfs命令,-namenode命令
    namenode命令是hadoop提供的操作NN节点的shell命令入口,包括NN节点的格式化,NN节点升级,NN节点回滚,NN节点启动等操作。查看帮助信息:hdfs namenode -h;
    [hadoop@slaver1 data_hadoop]$ hdfs namenode -h    
12)、hadoop命令
    hadoop命令主要是将hdfs,yarn,mapred全部命令进行一个整合,实际生活中一般情况下主要使用hadoop命令来进行job的管理到多个集群之间的数据复制文件。常用命令主要有:
        a、job,job声明周期管理,包括提交,查看状态,kill等等。
            [hadoop@slaver1 data_hadoop]$ hadoop job
            该命令主要是根据我们控制job声明周期的接口。我们可以通过该命令提交job,查看我们提交job的运行情况,杀死我们提交的job,也可以删除job运行中的某个具体task;
            
        b、distcp,多集群间数据复制。
        c、version,查看hadoop版本信息。

 6、Hdfs结构介绍和YARN的介绍:

代码语言:javascript
复制
a、hdfs是hadoop提供的基于分布式的文件存储系统。全称为hadoop distributed file system。主要是由namenode,datanode两类节点构成,其中namenode节点的主要功能是管理系统的元数据,负责管理文件系统的命令空间,记录文件数据块在datanode节点上面的位置和副本信息,协调客户端对文件系统的访问,以及记录命名空间的改动和本身属性的变动。datanode节点的主要功能就是负责节点所在物理节点上的存储管理。
b、MapReduce(YARN)是hadoop提供的一种处理海量数据的并行编程模型和计算框架,用于对大规模的数据进行并行计算。主要由resourcemanager和nodemanager两类节点构成。其中resourcemanager主要负责集群资源管理,nodemanager负责节点的资源管理。初次之外,当运行mapreduce任务的时候,会产生ApplicationMaster和Container,其中ApplicationMaster负责向resourcemanager节点进行资源的申请并控制任务的执行,Container是最基本的资源单位。MapReduce的map和reduce均是其之上进行的。

 7:Hbase的巩固与学习:

代码语言:javascript
复制
a、Hbase是建立在hdfs之上的一个提供可靠性,高性能,列存储,可伸缩,实时读写的数据库系统。是一种介于nosql和RDBMS之间的一种数据库系统,仅支持通过rowkey和range进行数据的检索,主要存储非结构化数据和半结构化数据。Hbase的目标是通过横向扩展,添加普通机器来增加存储性能和计算性能。Hbase的特点,大(一个表可以有上亿行以及百万级的行),面向列存储,稀疏(由于null不占用存储空间,所有表结构可以设计的非常稀疏)
b、Hbase使用zookeeper进行集群的节点管理,当然hbase自身集成了一个zk系统,不过一般情况下在实际成产环境中不使用。Hbase由master,进程是hmaster和regionserver,进程是hregionserver两类节点(如果使用hbase自带的zk服务,那么还有HQuorumPeer进程)。Hbase支持提供backup master进行master备份。其中节点负责和zk进行通信以及存储regionserver的相关位置信息,regionserver节点实现具体对数据的操作,最终数据存储在hdfs上。
c、Hbase的安装:
  1)、hbase存在三种安装方式,一种是独立模式,基本不用,第二种是分布式模式(继承zookeeper),第三种是分布式模式(独立zookeeper)。
   2)、hbase的下载地址如下所示:http://archive.cloudera.com/cdh5/cdh/5/。
  3)、hbase的安装参考如下所示:http://www.cnblogs.com/biehongli/p/7729135.html。
  4)、在hbase的根目录下创建一个文件夹hbase来存储临时文件和pid等等。默认是tmp目录。
   5)、创建到hdfs-site.xml的软连接或者配置连接hdfs的配置信息。然后将hbase的相关信息添加到环境变量中。
   6)、可以查看hbase是否安装成功:[hadoop@slaver1 bin]$ hbase version。
   7)、验证hbase的三种方式:第一种,jps查看是否有Hbase的进程启动,HMaster,HRegionServer。第二种,web界面查看是否启动http://192.168.19.131:60010/。第三种,shell命令客户端查看是否启动成功。[hadoop@slaver1 conf]$ hbase shell
d、zookeeper的安装和部署:
  1)、将zookeeper-3.4.5-cdh5.3.6.tar.gz上传到虚拟机,进行解压缩操作,具体类比参考:http://www.cnblogs.com/biehongli/p/7650570.html
    也可以在线下载,如果网络可以的话。命令如下所示:
    [hadoop@slaver1 script_hadoop]$ wget http://archive.cloudera.com/cdh5/cdh/5/zookeeper-3.4.5-cdh5.3.6.tar.gz

待续......

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-04-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档