HDFS+Spark(Hive On Spark)+Flume/Shell架构进行大数据分析

前言

公司需要对数据进行运营分析,为了满足运营大数据分析的需求,决定采用hadoop进行数据分析查询

经过研究打算采用如下架构



游戏服通过http方式把日志消息写入到BI服务器,BI服务器通过log4j记录日志信息。然后把日志文件导入HDFS中,通过Spark进行数据的统计查询。

这里把日志文件导入HDFS中有两种方法:

1、flume

定时把日志文件拷贝到flume监控的目录下,然后flume就会自动把日志文件导入到HDFS中。

这种方式的优点就是可以配置HDFS文件的大小,不至于生成很多小文件。缺点就是导入速度比较慢,而且如果有大文件移动到flume的监控目录下,会报异常(网上有解决方案),导致flume停止执行。

flume还有其他优点,比如说分布式收集等等;缺点就是遇到异常就会停止执行,大文件拷贝问题,经过测试,拷贝一个400多M的文件到flume监控目录中,如果flume channel采用内存方式,导入到HDFS中需要将近10分钟(单机),如果flume channel采用文件方式,则会超时。但是内存方式又不能保证消息的一致性。

2、shell

可以通过shell脚本直接把日志文件直接通过hadoop fs -put方式直接导入到HDFS中。这种方式的优点就是速度快,简单;缺点就是单机非分布式,日志文件的大小需要自己去控制。日志文件导入成功需要自己去标记。可能还需要对HDFS做小文件合并处理。

 

本次安装用到的软件版本分别是

hadoop2.6

spark-1.6.1-bin-hadoop2.6

flume1.6

 

一、Hadoop安装配置

这里讲解的是单机伪分布式配置,具体的配置网上很多,这边就不详细介绍,只讲解一些要点

1、解压hadoop

2、安装JDK7

3、vim /etc/profile ,配置java_home和hadoop_home环境(文章最后有详细配置信息)

4、ssh免密码登陆设置

cd ~/.ssh/                     # 若没有该目录,请先执行一次ssh localhost

ssh-keygen -t rsa              # 会有提示,都按回车就可以

cat ./id_rsa.pub >> ./authorized_keys  # 加入授权

5、修改hadoop配置文件(/hadoop/hadoop-2.6.0/etc/hadoop)

5.1 vim hadoop-env.sh

增加export JAVA_HOME=${JAVA_HOME}

5.2 vim core-site.xml

<configuration>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/local/hadoop/hadoop-2.6.0/tmp</value>
</property>
<property>
  <name>fs.defaultFS</name>
      <value>hdfs://10.10.31.35:9000</value>
      </property>
      <property>
      <name>fs.hdfs.impl</name>
      <value>org.apache.hadoop.hdfs.DistributedFileSystem</value>
      <description>The FileSystem for hdfs: uris.</description>
      </property>
</configuration>

 5.3 vim hdfs-site.xml

 

<configuration>
<property>
 <name>dfs.replication</name>
  <value>1</value>
  </property>

 <property>
         <name>dfs.permissions</name>
                 <value>false</value>
                   </property>

<property>
  <name>dfs.namenode.name.dir</name>
      <value>file:/usr/local/hadoop/hadoop-2.6.0/tmp/dfs/name</value>
      </property>

<property>
  <name>dfs.datannode.data.dir</name>
      <value>file:/usr/local/hadoop/hadoop-2.6.0/tmp/dfs/data</value>
      </property>
</configuration>
  5.4 vim mapred-site.xml

 

<configuration>
<property>
<name>mapred.job.tracker</name>
<value>10.10.31.35:9001</value>
</property>
</configuration>
   5.5 vim yarn-site.xml

 

<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>

 <property>
   <name>yarn.nodemanager.aux-services</name>
       <value>mapreduce_shuffle</value>
        </property>
<!-- Site specific YARN configuration properties -->

</configuration>

6、执行NameNode 格式化

./bin/hdfs namenode -format

7、启动hadoop进程

./sbin/start-dfs.sh

到这里hadoop的配置就已经完成了,详细可以参考http://www.powerxing.com/install-hadoop/

 二、spark安装配置 详情参考http://www.thebigdata.cn/Hadoop/28957.html  启动thriftserver,详情参考http://blog.csdn.net/wind520/article/details/44061563 到这里就可以通过jdbc访问hive on spark了(以下简称hive数据库) 访问hive数据库有几种方式,一种是通过sparksql,一种是通过beeline,一种是jdbc 创建表示例 create table test(id int,name string) row format delimited fields terminated by '\t' stored as textfile location 'hdfs://10.10.31.35:9000/user/hive/warehouse/temp.db/test'; 三、flume安装配置 详情参考http://www.flybi.net/blog/lp_hadoop/1241 运行flume: bin/flume-ng agent --conf-file conf/test.conf --name agent1 -Dflume.root.logger=INFO,console 备注: 1、如果要让外网访问,需要vim /etc/hosts 添加127.0.0.1 ip-10-10-31-35 export JRE_HOME=/usr/lib/jvm/java-1.7.0-openjdk-1.7.0.99.x86_64/jdk1.8.0_73/jre export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$PATH export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH

export HADOOP_HOME=/usr/local/hadoop/hadoop-2.6.0

export HADOOP_INSTALL=$HADOOP_HOME

export HADOOP_MAPRED_HOME=$HADOOP_HOME

export HADOOP_COMMON_HOME=$HADOOP_HOME

export HADOOP_HDFS_HOME=$HADOOP_HOME

export YARN_HOME=$HADOOP_HOME

export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native

export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

 

export SCALA_HOME=/usr/local/scala/scala-2.11.8

export PATH=$SCALA_HOME/bin:$PATH

 

export SPARK_HOME=/usr/local/spark/spark-1.6.1-bin-hadoop2.6

export PATH=$SPARK_HOME/bin:$PATH

export HADOOP_HOME=/usr/local/hadoop/hadoop-2.6.0 export HADOOP_INSTALL=$HADOOP_HOME export HADOOP_MAPRED_HOME=$HADOOP_HOME export HADOOP_COMMON_HOME=$HADOOP_HOME export HADOOP_HDFS_HOME=$HADOOP_HOME export YARN_HOME=$HADOOP_HOME export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin   export SCALA_HOME=/usr/local/scala/scala-2.11.8 export PATH=$SCALA_HOME/bin:$PATH   export SPARK_HOME=/usr/local/spark/spark-1.6.1-bin-hadoop2.6 export PATH=$SPARK_HOME/bin:$PATH

猜你喜欢

转载自pumbaa-he.iteye.com/blog/2293230
今日推荐