CentOS下Hadoop的安装、清洗数据、数据可视化教程

   JDK1.7的安装

1.直接tar开,即可

3、配置jdk相关的环境变量

使用命令进入文件.bashrc 中:cd ~

vi .bashrc

添加环境变量:

export JAVA_HOME=/usr/java/local/jdk

export PATH=$PATH:$JAVA_HOME/bin

如图3

图3

使用命令是文件生效:source .bashrc

  1. 测试jdk安装是否成功:java -version 如图4

    图4

    5、在其他每台机器上也进行安装jdk

    配置集群ssh免密码登录

    1、首先在三台机器上配置对本机的ssh免密码登录。

    (1)生成本机的公钥,使用命令:ssh-keygen -t rsa

    过程中不断敲回车即可,ssh-keygen命令默认会将公钥放在/root/.ssh目录下,如图1.1

    图1.1

    (2)将公钥复制为authorized_keys文件,此时使用ssh连接本机就不需要输入密码了

    使用命令 cd /root/.ssh

    cp id_rsa.pub authorized_keys

    (3)使用ssh localhost 验证,如图1.3

    图1.3

    2、接着配置三台机器互相之间的ssh免密码登录

    使用命令ssh-copy-id -i spark1(需要免密的主机)命令将本机的公钥拷贝到指定机器的authorized_keys文件中(方便好用)如图2.1

    图2.1

    验证是否成功使用命令:ssh spark1 如图2.2

    图2.2

    注意:如果想让spark2,spark3登录spark1,就需要把spark1的公钥拷贝到spark2和spark3,登录spark2和spark3也是同理。

    安装hadoop

    1、将hadoop-2.4.1.tar.gz,使用SecureCRT上传到linux的/usr/local目录下。

    2、将hadoop包进行解压缩:

    找到hadoop-2.4.1.tar.gz使用命令:cd /usr/local

    hadoop包进行解压缩:tar -zxvf hadoop-2.4.1.tar.gz

    3、对hadoop目录进行重命名:mv hadoop-2.4.1 hadoop

    4、配置hadoop相关环境变量

    进入~下,使用命令 cd ~

    打开配置文件: vi .bashrc

    添加环境变量:

    export HADOOP_HOME=/usr/local/hadoop

    export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin(注意:在原有的追加,如图4.1)

    图4.1

    使用命令使文件生效:source .bashrc

    使用命令:hadoop version查看配置是否成功如图4.2

    图4.2

  2. 修改配置文件

    进入Hadoop目录下修改,使用命令:cd /usr/local/hadoop/etc/hadoop

    查看当前目录: ls 可以看到修改的文件:

    修改core-site.xml

    fs.default.name

    hdfs://spark1:9000

    修改hdfs-site.xml

    dfs.name.dir

    /usr/local/data/namenode

    dfs.data.dir

    /usr/local/data/datanode

    dfs.tmp.dir

    /usr/local/data/tmp

    dfs.replication

    3

    修改mapred-site.xml

    mapreduce.framework.name

    yarn

    修改yarn-site.xml

    yarn.resourcemanager.hostname

    spark1

    yarn.nodemanager.aux-services

    mapreduce_shuffle

    修改slaves文件 如图

    spark1

    spark2

    spark3

    6、在另外两台机器上搭建hadoop

  3. 使用如上配置在另外两台机器上搭建hadoop,可以使用scp命令将spark1上面的hadoop安装包和.bashrc配置文件都拷贝过去。操作如下:

    使用命令进入Hadoop上层目录:cd /usr/local

    远程复制:scp -r hadoop root@spark2:/usr/local

    使用命令进入~:cd ~

    远程复制:scp ~/.bashrc root@spark2:~/

    同理拷贝到spark3上。

  4. 要记得对.bashrc文件进行source,以让它生效。

    source .bashrc

    3、记得在spark1、spark2和spark3的/usr/local目录下创建data目录。

    进入目录下:cd /usr/local

    创建data文件夹: mkdir data

    启动hdfs集群

    1、格式化namenode:在spark1上执行以下命令:hdfs namenode -format

    2、启动hdfs集群:start-dfs.sh
    3、验证启动是否成功:jps 如图3.1

    节点数为:

    spark1:namenode、datanode、secondarynamenode

    spark2:datanode

    spark3:datanode

    图3.1

    使用spark1:50070端口登录浏览器查看是否成功,如图3.2

    图3.2

    启动yarn集群

  5. 启动yarn集群:start-yarn.sh
    2、验证启动是否成功:jps 图2.1

    节点数为:

    spark1:resourcemanager、nodemanager

    spark2:nodemanager

    spark3:nodemanager

    图2.1

    使用spark1:8088端口登录浏览器查看,如图2.2

    图2.2

    安装Hive

    1、将apache-hive-0.13.1-bin.tar.gz使用SecureCRT上传到spark1的/usr/local目录下。

    2、解压缩hive安装包:

    进入/usr/local目录下: cd /usr/local

    解压缩apache-hive-0.13.1-bin.tar.gz包: tar -zxvf apache-hive-0.13.1-bin.tar.gz

    3、重命名hive目录:mv apache-hive-0.13.1-bin hive

    4、配置hive相关的环境变量

    进入~下:cd ~

    打开配置文件:vi .bashrc

    修改内容:如图4

    export HIVE_HOME=/usr/local/hive

    export PATH=$HIVE_HOME/bin

    图4

    使配置文件生效:source .bashrc

    安装mysql

    1、在主节点安装,tar开文件安装service、del,comme三个文件

    使用命令:

    启动mysql: service mysqld start

    3、使用yum安装mysql驱动mysql connector

    yum install -y mysql-connector-java

    4、将mysql connector拷贝到hive的lib包中

    cp /usr/share/java/mysql-connector-java.jar /usr/local/hive/lib

  6. 在mysql上创建hive元数据库,并对hive进行授权

    使用命令进入mysql:mysql 如图5.1

    图5.1

    创建数据库:create database if not exists data;

    对hive进行授权操作元数据库:

    grant all privileges on data.* to 'hive'@'%' identified by 'hive';

    grant all privileges on data.* to 'hive'@'localhost' identified by 'hive';

    grant all privileges on data.* to 'hive'@'spark1' identified by 'hive';

    如图5.2

    图5.2

    刷新权限: flush privileges;

    可以使用数据库:use data;

    注意:从数据库创建,都是mysql的相关知识,记得加分号。

  7. 配置文件

    配置hive-site.xml(修改对应得值)

    进入/usr/local/hive/conf目录下:cd /usr/local/hive/conf

    修改名称:mv hive-default.xml.template hive-site.xml

    进入文件:vi hive-site.xml

    修改内容:

    javax.jdo.option.ConnectionURL

    jdbc:mysql://spark1:3306/data?createDatabaseIfNotExist=true

    javax.jdo.option.ConnectionDriverName

    com.mysql.jdbc.Driver

    javax.jdo.option.ConnectionUserName

    hive

    javax.jdo.option.ConnectionPassword

    hive

    hive.metastore.warehouse.dir

    /user/hive/warehouse

    配置hive-env.sh和hive-config.sh

    修改名称:mv hive-env.sh.template hive-env.sh

    进入文件:vim /usr/local/hive/bin/hive-config.sh

    在文件中追加:如图6.1

    export JAVA_HOME=/usr/ local/jdk1.7.0_79

    export HIVE_HOME=/usr/local/hive

    export HADOOP_HOME=/usr/local/hadoop

    图6.1

    验证hive是否安装成功

    直接输入hive命令,可以进入hive命令:hive 如图:6.2

    在hive上建表:Create table t1(id int)

    查询表:Select * from t1;

    删除表:Drop table t1;

    如图6.3,表示成功

    图6.3

    注意:sql语句使用分号结尾。

    安装Sqoop

    Sqoop选择版本sqoop-1.4.5-cdh5.3.6

    一、Sqoop安装步骤

    1、下载http://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.5-cdh5.3.6.tar.gz

    2.、将sqoop-1.4.5-cdh5.3.6.tar.gz使用SecureCRT上传到/usr/local目录下。

    3、解压缩sqoop包:

    进入/usr/local目录下:cd /usr/local

    解压缩sqoop-1.4.5-cdh5.3.6.tar.gz包: tar zxvf sqoop-1.4.5-cdh5.3.6.tar.gz

    4、更改sqoop目录名:mv sqoop-1.4.5-cdh5.3.6 sqoop

    5、copy mysql的驱动类到sqoop的lib文件夹中

    cp /usr/share/java/mysql-connector-java-5.1.17.jar /usr/local/sqoop/lib

    6、配置sqoop-env.sh文件内容,

    进入/usr/local/sqoop/conf目录下: cd /usr/local/sqoop/conf

    修改名字:mv sqoop-env-template.sh sqoop-env.sh

    打开文件:vi sqoop-env.sh

    内容如下:如图7

    export HADOOP_COMMON_HOME=/usr/local/hadoop

    export HADOOP_MAPRED_HOME=/usr/local/hadoop

    export HIVE_HOME=/usr/local/hive

    图7

    8、配置环境变量

    进入~下:cd ~

    打开文件:vi .bashrc

    在最后添加内容(如图8.1):

    export SQOOP_HOME=/usr/local/sqoop

    export PATH=$PATH:$SQOOP_HOME/bin

    图8.1

    使命令生效:source .bashrc

  8. 测试是否安装成功sqoop version,如图9

    图9

    对HDFS中的日志进行格式清洗

    1、安装好Eclipse,

    2、使用Eclipse创建一个java Protect,

    选择菜单栏的file---------->new-----------> javaProject,如图2.1:

    图2.1

    填写Project name,然后选择Next,如图2.2,

    图2.2

    最后选择finish结束。

    3、将hadoop-2.4.1.tar.gz解压一个文件夹中,进入解压后的文件下,找到share文件,搜索所有的jar,将所有的jar包剪切到share同级目录的新建文件夹_lib中。

    4、导入hadoop的jar包,

    选择项目---------->右击选择Build Path------------->点击Configure BuildPath如图4.1

    图4.1

    然后选择Libraries------->点击Add External JARs 如图4.2

    图4.2

    找到解压的jar包(_lib文件夹):全选-------->打开---------->ok

  9. 编写hadoop代码
  10. 创建一个类,选择项目下目录src-------->然后右击src-------->选择New-------->点击class,如图5.1.1

    图5.1.1

    编写Package和Name,最后选择Finish,如图5.1.2,

    图5.1.2

  11. 编写代码( 注意:每个项目的代码不相同)

    MyMap类(Map处理)

    package xin;
    import java.io.IOException;
    import java.text.ParseException;

    import java.text.SimpleDateFormat;

    import java.util.Date;

    import java.util.Locale;

    import org.apache.hadoop.io.IntWritable;

    import org.apache.hadoop.io.Text;

    import org.apache.hadoop.mapreduce.Mapper;

    public
    class MyMap extends Mapper {


    public
    static
    final SimpleDateFormat FORMAT = new SimpleDateFormat(


    "d/MMM/yyyy:HH:mm:ss", Locale.ENGLISH);


    public
    static
    final SimpleDateFormat dateformat1 = new SimpleDateFormat(


    "yyyy-MM-dd-HH:mm:ss");

        public
    final
    static IntWritable One = new IntWritable(1);

        private Text word = new Text();

        

        @Override

        protected
    void map(Object key, Text line, Context context)

                throws IOException, InterruptedException {

            

            //StringTokenizer,类似于String.split(" ");

            //line是每行的内容

            String lines=line.toString();

            String array=lines.split(",")[0].trim();

            int getTimeFirst = lines.indexOf("[");


    int getTimeLast = lines.indexOf("]");

    String time = lines.substring(getTimeFirst + 1, getTimeLast).trim();

    Date dt = null;

    String d1=null;


    try {

                dt= FORMAT.parse(time);

             d1=dateformat1.format(dt);

            } catch (ParseException e) {

                // TODO Auto-generated catch block

                e.printStackTrace();

            }


    word.set(array+" "+d1);

                context.write(word, One);

            

        

        }

    }

    编写 MyReducer类

    package xin;
        import java.io.IOException;
        import org.apache.hadoop.io.IntWritable;

        import org.apache.hadoop.io.Text;

        import org.apache.hadoop.mapreduce.Reducer;

        public
    class MyReducer extends Reducer {

            private IntWritable result = new IntWritable();

            @Override

            protected
    void reduce(Text key, Iterable values,

                    Context context) throws IOException, InterruptedException {

                result.set(1);

                context.write(key, result);

            }

        }

    编写Myapp代码

    package xin;
    import java.text.SimpleDateFormat;
    import java.util.Calendar;

    import org.apache.hadoop.fs.Path;

    import org.apache.hadoop.io.IntWritable;

    import org.apache.hadoop.io.LongWritable;

    import org.apache.hadoop.io.Text;

    import org.apache.hadoop.mapreduce.Job;

    import org.apache.hadoop.mapreduce.lib.input.FileInputFormat;

    import org.apache.hadoop.mapreduce.lib.output.FileOutputFormat;

    public class MyApp {

        public static void main(String[] args) throws Exception {


            Job job = Job.getInstance();

            job.setJobName("executer");

            job.setJarByClass(MyApp.class);



            job.setMapperClass(MyMap.class);


            job.setReducerClass(MyReducer.class);


            job.setOutputKeyClass(Text.class);

            job.setOutputValueClass(IntWritable.class);


             Calendar cal = Calendar.getInstance();

             cal.add(Calendar.DATE, 0);

             String yesterday = new SimpleDateFormat( "MM/dd/").format(cal.getTime());

            Path in = new Path("hdfs://s001:9000/usr/logsdata/"+yesterday);


            Path out = new Path("hdfs://s001:9000/usr/2");



            FileInputFormat.addInputPath(job, in );

            FileOutputFormat.setOutputPath(job, out);


            System.exit(job.waitForCompletion(true) ? 0 : 1);

        }

    }

    整个代码布局如图

  12. 将写好的hadoop项目打成jar包,上传到linux系统下,并运行

    (1)右击项目---->选择Export,如图6.1

    图6.1

  13. 选择java-------->JAR file------>next 图6.2

    图6.2

  14. 如图6.3 next----------->next图6.4

    图6.3

    图6.4

  15. 选择browser--------->选择MyApp(自己对应得main方法类)----------->选择自己对应得包 如图所示:

    4.1.1

    4.1.2

  16. 将jar保存到桌面(自己命名,如图5)

    图5

  17. 将hello.jar使用SecureCRT上传到/usr/local目录下。
  18. 在linux上运行jar包,

    使用命令:hadoop jar /usr/local/hello.jar

    成功 如图7

    图7

  19. 查看运行结果:使用命令:hadoop dfs -ls /usr/2 如图8.1出现两个文件

    注意:要根据每个项目中实际存储位置查看

    使用Hive进行数据分析

  20. 安装好hive
  21. 创建数据库:


    1)在linux下进入hive模式:输入hive,回车


    2)使用命令创建数据库:create database data;


    3)查看创建的数据库:show databases;

    如图2所示:

    图2

  22. 创建表

    使用sql语句,如下:

    使用data数据:use data;

    创建表:Create table datas(IP string,time string)

    注意:项目所建的数据库不相同

    以地区进行分区:Partitioned by (area string)

    每一行以空格读取:Row format delimited

    Fields terminated by " ";

    图3

  23. 将hdfs的日志数据导入表中

    使用命令:Load data inpath '/usr/2/part-r-00000' into table datas partition(area="beijing");

    注意:项目存储的位置不相同

    图4.1

    使用命令查看:select * from datas;

    图4.2

  24. 数据分析

    从表中查出16访问的的IP和其访问次数

    select IP,count(IP) from datas where time between '2016-12-27-16:39:13' and '2016-12-27-16:39:21' group by IP;

    注意:每个项目的分析使用的sql语句不同

  25. 将结果保存到表中

    先创建一个result表:Create table result(IP string,times int) ;

    注意:每个项目结果保存在不同的表中

    将结果保存到表中:insert into table result select IP,count(IP) from datas where time between '2016-12-27-16:39:13' and '2016-12-27-16:39:21' group by IP;

    注意:这条语句和每个项目的表,分析业务一致。

    使用sqoop将数据导入mysql

  26. 安装好Sqoop
  27. 在mysql中创建数据库和表信息

    创建数据库:create database data;

    使用数据库:use data;

    创建表信息:create table datas

    ( IP varchar(50),

    times int

    );


    注意:每个项目把结果导入不同的表中

  28. 将数据导入到mysql中

    使用命令:

    sqoop export --connect jdbc:mysql://localhost:3306/data --username root --password root --table datas --export-dir /usr/local/hive/warehouse/result/000000_0 -columns "IP,times" --input-fields-terminated-by '\001'

    注意:各个项目中的mysql表,到处表的地址

    如果类似错误(如图3所示)mysql自身bug,

    首先下载mysql-connector-java-5.1.32-bin.jar包,

    然后使用命令删除mysql-connector-java-5.1.17.jar包:

    rm -rf /usr/local/sqoop/lib/mysql-connector-java-5.1.17.jar

    其次将下载好的mysql-connector-java-5.1.32-bin.jar导入/usr/local/sqoop/lib/目录

    图3

  29. 运行成功会如图4所示

    图4

  30. 使用命令查看数据:如图5

    输入命令:mysql

    使用数据库:use data;

    查询数据:select * from datas;

    图5

    使用Eclipse进行效果展示

    http://repo.springsource.org/libs-release-local/org/springframework/spring/%20/ SpringMVC下载

    mybatis是数据库工具,需要数据库Mysql。它的jar包有mybatis-3.0.2.jar(mybatis核心包)、mybatis-spring-1.0.0.jar(与Spring结合包)。下载地址:http://ibatis.apache.org/tools/ibator

  31. 将写好的SpringMVC+Mybatis项目导入到eclipse中。
  32. 打开eclipse,右击左边空白处----------->New--------Import,如图1.1,

    图1.1

    (2)进入后,选择General------------->Existing Projects into Workspace-------------->Next,如图1.2,

    图1.2

    (3)进入后选择Browse(路径为存放该项目的位置,我的路径是D:\01_edu\workspace),点确定,如图1.3,在finish。

    图1.3

    (4)最后会将该项目导进来,如图1.4,

    图1.4

  33. 部署Tomcat服务器
  34. 选择点击如图2.1

    图2.1

  35. 选择add和Tomcat v7.0 Server,如图2.2,

    图2.2

  36. 选择Browse找到Tomcat7存放的位置,选上,点击确定,如图2.3,在finish,

    图2.3

    (4)选择Next,如图2.4,

    图2.4

  37. 选择要运行的项目,点击Add,

    图2.5

  38. 添加完成后如图2.6,最后选择finish,

    图2.6

  39. 完成后,选中Tomcat服务器,点击绿色按钮。如图2.7,

    图2.7

  40. 中间过程没有报错,启动完成,如图2.8

    图2.8

    3、使用浏览器查看效果:输入网址http://localhost:8080/product/findAll.do,如图3

你可能感兴趣的:(Linux,大数据)