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
-
测试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
-
修改配置文件
进入Hadoop目录下修改,使用命令:cd /usr/local/hadoop/etc/hadoop
查看当前目录: ls 可以看到修改的文件:
修改core-site.xml
<property>
<name>fs.default.name</name>
<value>hdfs://spark1:9000</value>
</property>
修改hdfs-site.xml
<property>
<name>dfs.name.dir</name>
<value>/usr/local/data/namenode</value>
</property>
<property>
<name>dfs.data.dir</name>
<value>/usr/local/data/datanode</value>
</property>
<property>
<name>dfs.tmp.dir</name>
<value>/usr/local/data/tmp</value>
</property>
<property>
<name>dfs.replication</name>
<value>3</value>
</property>
修改mapred-site.xml
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
修改yarn-site.xml
<property>
<name>yarn.resourcemanager.hostname</name>
<value>spark1</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
修改slaves文件 如图
spark1
spark2
spark3
6、在另外两台机器上搭建hadoop
-
使用如上配置在另外两台机器上搭建hadoop,可以使用scp命令将spark1上面的hadoop安装包和.bashrc配置文件都拷贝过去。操作如下:
使用命令进入Hadoop上层目录:cd /usr/local
远程复制:scp -r hadoop root@spark2:/usr/local
使用命令进入~:cd ~
远程复制:scp ~/.bashrc root@spark2:~/
同理拷贝到spark3上。
-
要记得对.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集群
-
启动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
-
在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的相关知识,记得加分号。
-
配置文件
配置hive-site.xml(修改<name>对应得<value>值)
进入/usr/local/hive/conf目录下:cd /usr/local/hive/conf
修改名称:mv hive-default.xml.template hive-site.xml
进入文件:vi hive-site.xml
修改内容:
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://spark1:3306/data?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>hive</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>hive</value>
</property>
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
配置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
-
测试是否安装成功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
- 编写hadoop代码
-
创建一个类,选择项目下目录src-------->然后右击src-------->选择New-------->点击class,如图5.1.1
图5.1.1
编写Package和Name,最后选择Finish,如图5.1.2,
图5.1.2
-
编写代码( 注意:每个项目的代码不相同)
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<Object, Text, Text, IntWritable> {
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<Text, IntWritable, Text, IntWritable> {private IntWritable result = new IntWritable();
@Override
protected
void reduce(Text key, Iterable<IntWritable> 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);
}
}
整个代码布局如图
-
将写好的hadoop项目打成jar包,上传到linux系统下,并运行
(1)右击项目---->选择Export,如图6.1
图6.1
-
选择java-------->JAR file------>next 图6.2
图6.2
-
如图6.3 next----------->next图6.4
图6.3
图6.4
-
选择browser--------->选择MyApp(自己对应得main方法类)----------->选择自己对应得包 如图所示:
4.1.1
4.1.2
-
将jar保存到桌面(自己命名,如图5)
图5
- 将hello.jar使用SecureCRT上传到/usr/local目录下。
-
在linux上运行jar包,
使用命令:hadoop jar /usr/local/hello.jar
成功 如图7
图7
-
查看运行结果:使用命令:hadoop dfs -ls /usr/2 如图8.1出现两个文件
注意:要根据每个项目中实际存储位置查看
使用Hive进行数据分析
- 安装好hive
-
创建数据库:
(1)在linux下进入hive模式:输入hive,回车
(2)使用命令创建数据库:create database data;
(3)查看创建的数据库:show databases;如图2所示:
图2
-
创建表
使用sql语句,如下:
使用data数据:use data;
创建表:Create table datas(IP string,time string)
注意:项目所建的数据库不相同
以地区进行分区:Partitioned by (area string)
每一行以空格读取:Row format delimited
Fields terminated by " ";
图3
-
将hdfs的日志数据导入表中
使用命令:Load data inpath '/usr/2/part-r-00000' into table datas partition(area="beijing");
注意:项目存储的位置不相同
图4.1
使用命令查看:select * from datas;
图4.2
-
数据分析
从表中查出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语句不同
-
将结果保存到表中
先创建一个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
- 安装好Sqoop
-
在mysql中创建数据库和表信息
创建数据库:create database data;
使用数据库:use data;
创建表信息:create table datas
( IP varchar(50),
times int
);
注意:每个项目把结果导入不同的表中 -
将数据导入到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
-
运行成功会如图4所示
图4
-
使用命令查看数据:如图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
- 将写好的SpringMVC+Mybatis项目导入到eclipse中。
-
打开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
- 部署Tomcat服务器
-
选择点击如图2.1
图2.1
-
选择add和Tomcat v7.0 Server,如图2.2,
图2.2
-
选择Browse找到Tomcat7存放的位置,选上,点击确定,如图2.3,在finish,
图2.3
(4)选择Next,如图2.4,
图2.4
-
选择要运行的项目,点击Add,
图2.5
-
添加完成后如图2.6,最后选择finish,
图2.6
-
完成后,选中Tomcat服务器,点击绿色按钮。如图2.7,
图2.7
-
中间过程没有报错,启动完成,如图2.8
图2.8
3、使用浏览器查看效果:输入网址http://localhost:8080/product/findAll.do,如图3