[关闭]
@liyuj 2017-10-07T22:48:52.000000Z 字数 12973 阅读 3371

Apache-Ignite-2.2.0-中文开发手册

3.Hadoop加速器

3.1.Hadoop加速器

Ignite Hadoop加速器提供了一个组件集来进行内存Hadoop作业执行以及文件系统操作。

3.1.1.MapReduce

Hadoop加速器提供了一个高性能的作业跟踪器实现,替代了标准的Hadoop MapReduce,使用它可以提高Hadoop MapReduce作业执行的性能。

3.1.2.IGFS-内存文件系统

Hadoop加速器提供了一个HadoopFileSystem实现,它通过分布式Ignite文件系统(IGFS)在内存内存储文件系统数据,使用它可以最小化磁盘IO以及改进任何文件系统操作的性能。

3.1.3.二级文件系统

Hadoop加速器提供了一个SecondaryFileSystem的实现,这个实现可以注入已有的IGFS以在任何其他的HadoopFileSystem实现上进行通读和通写操作(比如HDFS)。如果希望在基于磁盘的HDFS或者任何其他的Hadoop兼容文件系统上建立一个内存缓存层,那么可以使用它。

3.1.4.支持的Hadoop发行版

Ignite Hadoop加速器可以用于一系列的Hadoop发行版,每个发行版都需要一个特定的安装步骤。

3.2.MapReduce

Ignite内存MapReduce可以有效地对存储在任何Hadoop文件系统上的数据进行并行处理,他在提供了低延迟,HPC样式的分布式处理的同时还消除了与标准Hadoop架构中的作业跟踪器和任务跟踪器有关的开销。内存内的MapReduce对于强CPU需求的任务提供了令人激动的性能,而仅仅需要对已有的应用进行很小的改动。

3.2.1.配置Ignite

Ignite Hadoop加速器MapReduce引擎在Ignite集群中处理Hadoop作业,必须满足若干前提条件:

  1. <bean class="org.apache.ignite.configuration.IgniteConfiguration">
  2. ...
  3. <property name="connectorConfiguration">
  4. <list>
  5. <bean class="org.apache.ignite.configuration.ConnectorConfiguration">
  6. <property name="host" value="myHost" />
  7. <property name="port" value="12345" />
  8. </bean>
  9. </list>
  10. </property>
  11. </bean>

3.2.2.运行Ignite

配置Ignite节点后用如下方法启动:

  1. $ bin/ignite.sh

3.2.3.配置Hadoop

要通过Ignite作业跟踪器运行Hadoop作业需要满足一些必要条件:

这仍然可以通过几种方式实现,第一,可以创建独立的带有这些配置属性的mapred-site.xml文件然后将其用于作业执行:

  1. <configuration>
  2. ...
  3. <property>
  4. <name>mapreduce.framework.name</name>
  5. <value>ignite</value>
  6. </property>
  7. <property>
  8. <name>mapreduce.jobtracker.address</name>
  9. <value>127.0.0.1:11211</value>
  10. </property>
  11. ...
  12. </configuration>

第二,可以覆写Hadoop安装的mapred-site.xml,这会强制所有Hadoop作业默认选择Ignite作业跟踪器,除非通过某种方式在作业级覆写。
第三,可以为特定的作业通过编程方式设置这些属性:

  1. Configuration conf = new Configuration();
  2. ...
  3. conf.set(MRConfig.FRAMEWORK_NAME, IgniteHadoopClientProtocolProvider.FRAMEWORK_NAME);
  4. conf.set(MRConfig.MASTER_ADDRESS, "127.0.0.1:11211);
  5. ...
  6. Job job = new Job(conf, "word count");
  7. ...

3.2.4.运行Hadoop

如何运行一个作业取决于如何配置Hadoop:
如果配置了独立的mapred-site.xml

  1. hadoop --config [path_to_config] [arguments]

如果修改了默认的mapred-site.xml,那么--config选项就不是必要的了:

  1. hadoop [arguments]

如果通过编程方式启动作业,那么像下面这样提交他:

  1. ...
  2. Job job = new Job(conf, "word count");
  3. ...
  4. job.submit();

3.3.在Apache Hadoop上安装

本章节描述了如何在Apache Hadoop发行版上安装Ignite Hadoop加速器。
安装由如下的主要步骤组成:

3.3.1.Ignite

  1. <bean class="org.apache.ignite.configuration.FileSystemConfiguration">
  2. ...
  3. <property name="secondaryFileSystem">
  4. <bean class="org.apache.ignite.hadoop.fs.IgniteHadoopIgfsSecondaryFileSystem">
  5. <property name="fileSystemFactory">
  6. <bean class="org.apache.ignite.hadoop.fs.CachingHadoopFileSystemFactory">
  7. <property name="uri" value="hdfs://your_hdfs_host:9000/"/>
  8. </bean>
  9. </property>
  10. </bean>
  11. </property>
  12. </bean>

如果需要,也可以向文件系统工厂传递额外的Hadoop配置文件:

  1. <bean class="org.apache.ignite.hadoop.fs.CachingHadoopFileSystemFactory">
  2. <property name="uri" value="hdfs://your_hdfs_host:9000/"/>
  3. <property name="configPaths">
  4. <list>
  5. <value>/path/to/core-site.xml</value>
  6. </list>
  7. </property>
  8. </bean>
  1. $IGNITE_HOME/bin/ignite.sh

3.3.2.Hadoop

  1. cd $HADOOP_HOME/share/hadoop/common/lib
  2. ln -s $IGNITE_HOME/libs/ignite-core-[version].jar
  3. ln -s $IGNITE_HOME/libs/ignite-shmem-1.0.0.jar
  4. ln -s $IGNITE_HOME/libs/ignite-hadoop/ignite-hadoop-[version].jar
  1. mkdir ~/ignite_conf
  2. cd ~/ignite_conf
  3. cp $HADOOP_HOME/etc/hadoop/core-site.xml .
  4. cp $HADOOP_HOME/etc/hadoop/mapred-site.xml .

如果要使用IGFS,需要在core-site.xml中添加类名映射:

  1. <configuration>
  2. ...
  3. <property>
  4. <name>fs.igfs.impl</name>
  5. <value>org.apache.ignite.hadoop.fs.v1.IgniteHadoopFileSystem</value>
  6. </property>
  7. <property>
  8. <name>fs.AbstractFileSystem.igfs.impl</name>
  9. <value>org.apache.ignite.hadoop.fs.v2.IgniteHadoopFileSystem</value>
  10. </property>
  11. ...
  12. </configuration>

如果要使用IGFS作为默认的文件系统(即没有igfs://前缀),那么应该设置core-site.xml中的fs.defaultFS属性:

  1. <configuration>
  2. ...
  3. <property>
  4. <name>fs.defaultFS</name>
  5. <value>igfs://igfs@/</value>
  6. </property>
  7. ...
  8. </configuration>

如果希望使用Ignite的Hadoop加速器用于MapReduce作业,那么应该将mapred-site.xml指向正确的作业跟踪器:

  1. <configuration>
  2. ...
  3. <property>
  4. <name>mapreduce.framework.name</name>
  5. <value>ignite</value>
  6. </property>
  7. <property>
  8. <name>mapreduce.jobtracker.address</name>
  9. <value>[your_host]:11211</value>
  10. </property>
  11. ...
  12. </configuration>

作为替代,也可以使用Ignite发行版自带的配置文件,位于$IGNITE_HOME/config/hadoop目录。

3.3.3.使用Ignite Hadoop加速器

到这一步安装已经完成然后就可以启动运行作业或者处理IGFS了。
查询IGFS:

  1. hadoop --config ~/ignite_conf fs -ls /

运行一个作业:

  1. hadoop --config ~/ignite_conf jar [your_job]

3.4.在Cloudera CDH上安装

本章节描述了如何在Cloudera CDH发行版上安装Ignite Hadoop加速器。
安装由如下的主要步骤组成:

3.4.1.Ignite

  1. export HADOOP_HOME=/usr/lib/hadoop/
  2. export HADOOP_COMMON_HOME=/usr/lib/hadoop/
  3. export HADOOP_HDFS_HOME=/usr/lib/hadoop-hdfs/
  4. export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce/
  1. <bean class="org.apache.ignite.configuration.FileSystemConfiguration">
  2. ...
  3. <property name="secondaryFileSystem">
  4. <bean class="org.apache.ignite.hadoop.fs.IgniteHadoopIgfsSecondaryFileSystem">
  5. <property name="fileSystemFactory">
  6. <bean class="org.apache.ignite.hadoop.fs.CachingHadoopFileSystemFactory">
  7. <property name="uri" value="hdfs://your_hdfs_host:8020"/>
  8. </bean>
  9. </property>
  10. </bean>
  11. </property>
  12. </bean>

如果需要,也可以给文件系统工厂传递额外的Hadoop配置文件:

  1. <bean class="org.apache.ignite.hadoop.fs.CachingHadoopFileSystemFactory">
  2. <property name="uri" value="hdfs://your_hdfs_host:9000"/>
  3. <property name="configPaths">
  4. <list>
  5. <value>/path/to/core-site.xml</value>
  6. </list>
  7. </property>
  8. </bean>
  1. $IGNITE_HOME/bin/ignite.sh

3.4.2.CDH

  1. cd /usr/lib/hadoop/lib
  2. ln -s $IGNITE_HOME/libs/ignite-core-[version].jar
  3. ln -s $IGNITE_HOME/libs/ignite-shmem-1.0.0.jar
  4. ln -s $IGNITE_HOME/libs/ignite-hadoop/ignite-hadoop-[version].jar
  1. mkdir ~/ignite_conf
  2. cd ~/ignite_conf
  3. cp /usr/hdp/current/hadoop-client/etc/core-site.xml .
  4. cp /usr/hdp/current/hadoop-client/etc/mapred-site.xml .

如果要使用IGFS,需要在core-site.xml中添加类名映射:

  1. <configuration>
  2. ...
  3. <property>
  4. <name>fs.igfs.impl</name>
  5. <value>org.apache.ignite.hadoop.fs.v1.IgniteHadoopFileSystem</value>
  6. </property>
  7. <property>
  8. <name>fs.AbstractFileSystem.igfs.impl</name>
  9. <value>org.apache.ignite.hadoop.fs.v2.IgniteHadoopFileSystem</value>
  10. </property>
  11. ...
  12. </configuration>

如果要使用IGFS作为默认的文件系统(即没有igfs://前缀),那么应该设置core-site.xml中的fs.default.name属性:

  1. <configuration>
  2. ...
  3. <property>
  4. <name>fs.default.name</name>
  5. <value>igfs://igfs@/</value>
  6. </property>
  7. ...
  8. </configuration>

如果希望使用Ignite的Hadoop加速器用于MapReduce作业,那么应该将mapred-site.xml指向正确的作业跟踪器:

  1. <configuration>
  2. ...
  3. <property>
  4. <name>mapreduce.framework.name</name>
  5. <value>ignite</value>
  6. </property>
  7. <property>
  8. <name>mapreduce.jobtracker.address</name>
  9. <value>[your_host]:11211</value>
  10. </property>
  11. ...
  12. </configuration>

作为替代,也可以使用Ignite发行版自带的配置文件,位于$IGNITE_HOME/config/hadoop目录。

3.4.3.使用Ignite Hadoop加速器

到这一步安装已经完成然后就可以启动运行作业或者处理IGFS了。
查询IGFS:

  1. hadoop --config ~/ignite_conf fs -ls /

运行一个作业:

  1. hadoop --config ~/ignite_conf jar [your_job]

3.5.在Hortonworks HDP上安装

本章节描述了如何在Hortonworks HDP发行版上安装Ignite Hadoop加速器。
安装由如下的主要步骤组成:

3.5.1.Ignite

  1. export HADOOP_HOME=/usr/hdp/current/
  2. export HADOOP_COMMON_HOME=/usr/hdp/current/hadoop-client/
  3. export HADOOP_HDFS_HOME=/usr/hdp/current/hadoop-hdfs-client/
  4. export HADOOP_MAPRED_HOME=/usr/hdp/current/hadoop-mapreduce-client/
  1. <bean class="org.apache.ignite.configuration.FileSystemConfiguration">
  2. ...
  3. <property name="secondaryFileSystem">
  4. <bean class="org.apache.ignite.hadoop.fs.IgniteHadoopIgfsSecondaryFileSystem">
  5. <property name="fileSystemFactory">
  6. <bean class="org.apache.ignite.hadoop.fs.CachingHadoopFileSystemFactory">
  7. <property name="uri" value="hdfs://your_hdfs_host:9000"/>
  8. </bean>
  9. </property>
  10. </bean>
  11. </property>
  12. </bean>

如果需要,也可以给文件系统工厂传递额外的Hadoop配置文件:

  1. <bean class="org.apache.ignite.hadoop.fs.CachingHadoopFileSystemFactory">
  2. <property name="uri" value="hdfs://your_hdfs_host:9000"/>
  3. <property name="configPaths">
  4. <list>
  5. <value>/path/to/core-site.xml</value>
  6. </list>
  7. </property>
  8. </bean>
  1. $IGNITE_HOME/bin/ignite.sh

3.5.2.HDP

  1. cd /usr/hdp/current/hadoop-client/lib
  2. ln -s $IGNITE_HOME/libs/ignite-core-[version].jar
  3. ln -s $IGNITE_HOME/libs/ignite-shmem-1.0.0.jar
  4. ln -s $IGNITE_HOME/libs/ignite-hadoop/ignite-hadoop-[version].jar
  1. mkdir ~/ignite_conf
  2. cd ~/ignite_conf
  3. cp /usr/hdp/current/hadoop-client/etc/core-site.xml .
  4. cp /usr/hdp/current/hadoop-client/etc/mapred-site.xml .

如果要使用IGFS,需要在core-site.xml中添加类名映射:

  1. <configuration>
  2. ...
  3. <property>
  4. <name>fs.igfs.impl</name>
  5. <value>org.apache.ignite.hadoop.fs.v1.IgniteHadoopFileSystem</value>
  6. </property>
  7. <property>
  8. <name>fs.AbstractFileSystem.igfs.impl</name>
  9. <value>org.apache.ignite.hadoop.fs.v2.IgniteHadoopFileSystem</value>
  10. </property>
  11. ...
  12. </configuration>

如果要使用IGFS作为默认的文件系统(即没有igfs://前缀),那么应该设置core-site.xml中的fs.default.name属性:

  1. <configuration>
  2. ...
  3. <property>
  4. <name>fs.default.name</name>
  5. <value>igfs://igfs@/</value>
  6. </property>
  7. ...
  8. </configuration>

如果希望使用Ignite的Hadoop加速器用于MapReduce作业,那么应该将mapred-site.xml指向正确的作业跟踪器:

  1. <configuration>
  2. ...
  3. <property>
  4. <name>mapreduce.framework.name</name>
  5. <value>ignite</value>
  6. </property>
  7. <property>
  8. <name>mapreduce.jobtracker.address</name>
  9. <value>[your_host]:11211</value>
  10. </property>
  11. ...
  12. </configuration>

作为替代,也可以使用Ignite发行版自带的配置文件,位于$IGNITE_HOME/config/hadoop目录。

3.5.3.使用Ignite Hadoop加速器

到这一步安装已经完成然后就可以启动运行作业或者处理IGFS了。
查询IGFS:

  1. hadoop --config ~/ignite_conf fs -ls /

运行一个作业:

  1. hadoop --config ~/ignite_conf jar [your_job]

3.6.Ignite和Apache Hive

本章节描述如果在经过Ignite加速后的Hadoop上正确配置和启动Hive,还显示了通过这样的配置如何启动HiveServer2以及一个远程客户端。

3.6.1.前提条件

假定Hadoop已经安装和配置好以运行在Ignite上,然后配置了IGFS文件系统以及MapReduce作业跟踪器功能的Ignite节点也已经启动运行。
还需要安装Hive

3.6.2.启动Hive

下面是在Ignited的Hadoop上运行Hive的必要步骤:

配置模板
建议使用Hive模板配置文件<IGNITE_HOME>/config/hadoop/hive-site.ignite.xml来获得Ignite指定的设置。

有一个与Hive和Hadoop中的不同jline库版本有关的潜在问题,他可以通过设置HADOOP_USER_CLASSPATH_FIRST=true环境变量来解决。

为了方便,也可以创建一个简单的脚本来正确地设置所有必要的变量然后启动Hive,像下面这样:

  1. # Specify Hive home directory:
  2. export HIVE_HOME=<Hive installation directory>
  3. # Specofy configuration files location:
  4. export HIVE_CONF_DIR=<Path to our configuration folder>
  5. # If you did not set hadoop executable in PATH, specify Hadoop home explicitly:
  6. export HADOOP_HOME=<Hadoop installation folder>
  7. # Avoid problem with different 'jline' library in Hadoop:
  8. export HADOOP_USER_CLASSPATH_FIRST=true
  9. ${HIVE_HOME}/bin/hive "${@}"

这个脚本可以用于在交互式控制台上启动Hive:

  1. $ hive-ig cli
  2. hive> show tables;
  3. OK
  4. u_data
  5. Time taken: 0.626 seconds, Fetched: 1 row(s)
  6. hive> quit;
  7. $

3.6.3.启动HiveServer2

如果为了增强的客户端功能希望使用HiveServer2,要启动它也可以使用上面创建的脚本。

  1. hive-ig --service hiveserver2

服务启动之后,可以使用任何有效的客户端(比如beeline)连接它。作为一个远程客户端,beeline可以在任意主机运行,他也不需要任何特别的环境来与IgnitedHive一起工作,下面是示例:

  1. $ ./beeline
  2. Beeline version 1.2.1 by Apache Hive
  3. beeline> !connect jdbc:hive2://localhost:10000 scott tiger org.apache.hive.jdbc.HiveDriver
  4. Connecting to jdbc:hive2://localhost:10000
  5. Connected to: Apache Hive (version 1.2.1)
  6. Driver: Hive JDBC (version 1.2.1)
  7. Transaction isolation: TRANSACTION_REPEATABLE_READ
  8. 0: jdbc:hive2://localhost:10000> show tables;
  9. +-----------+--+
  10. | tab_name |
  11. +-----------+--+
  12. | u_data |
  13. +-----------+--+
  14. 1 row selected (0.957 seconds)
  15. 0: jdbc:hive2://localhost:10000>
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注