@liyuj
2017-02-10T14:58:53.000000Z
字数 12977
阅读 3540
Apache-Ignite-1.8.0-中文开发手册
Ignite Hadoop加速器提供了一个组件集来进行内存Hadoop作业执行以及文件系统操作。
Hadoop加速器提供了一个高性能的作业跟踪器实现,替代了标准的Hadoop MapReduce,使用它可以提高Hadoop MapReduce作业执行的性能。
Hadoop加速器提供了一个HadoopFileSystem
实现,它通过分布式Ignite文件系统(IGFS
)在内存内存储文件系统数据,使用它可以最小化磁盘IO以及改进任何文件系统操作的性能。
Hadoop加速器提供了一个SecondaryFileSystem
的实现,这个实现可以注入已有的IGFS以在任何其他的HadoopFileSystem
实现上进行通读和通写操作(比如HDFS)。如果希望在基于磁盘的HDFS
或者任何其他的Hadoop兼容文件系统上建立一个内存缓存层,那么可以使用它。
Ignite Hadoop加速器可以用于一系列的Hadoop发行版,每个发行版都需要一个特定的安装步骤。
Ignite内存MapReduce可以有效地对存储在任何Hadoop文件系统上的数据进行并行处理,他在提供了低延迟,HPC样式的分布式处理的同时还消除了与标准Hadoop架构中的作业跟踪器和任务跟踪器有关的开销。内存内的MapReduce对于强CPU需求的任务提供了令人激动的性能,而仅仅需要对已有的应用进行很小的改动。
Ignite Hadoop加速器MapReduce引擎在Ignite集群中处理Hadoop作业,必须满足若干前提条件:
IGNITE_HOME
环境变量并且指向Ignite的安装根目录;127.0.0.1:11211
的请求,可以通过ConnectorConfiguration
类来改写默认的主机和端口。
<bean class="org.apache.ignite.configuration.IgniteConfiguration">
...
<property name="connectorConfiguration">
<list>
<bean class="org.apache.ignite.configuration.ConnectorConfiguration">
<property name="host" value="myHost" />
<property name="port" value="12345" />
</bean>
</list>
</property>
</bean>
配置Ignite节点后用如下方法启动:
$ bin/ignite.sh
要通过Ignite作业跟踪器运行Hadoop作业需要满足一些必要条件:
IGNITE_HOME
环境变量并且指向Ignite的安装根目录;${IGNITE_HOME}\libs\ignite-core-[version].jar
以及${IGNITE_HOME}\libs\hadoop\ignite-hadoop-[version].jar
,这可以通过几种方式实现: HADOOP_CLASSPATH
环境变量中;mapreduce.framework.name
:必须设置为ignite
;mapreduce.jobtracker.address
:必须设置为Ignite节点监听的主机/端口;这仍然可以通过几种方式实现,第一,可以创建独立的带有这些配置属性的mapred-site.xml
文件然后将其用于作业执行:
<configuration>
...
<property>
<name>mapreduce.framework.name</name>
<value>ignite</value>
</property>
<property>
<name>mapreduce.jobtracker.address</name>
<value>127.0.0.1:11211</value>
</property>
...
</configuration>
第二,可以覆写Hadoop安装的mapred-site.xml
,这会强制所有Hadoop作业默认选择Ignite作业跟踪器,除非通过某种方式在作业级覆写。
第三,可以为特定的作业通过编程方式设置这些属性:
Configuration conf = new Configuration();
...
conf.set(MRConfig.FRAMEWORK_NAME, IgniteHadoopClientProtocolProvider.FRAMEWORK_NAME);
conf.set(MRConfig.MASTER_ADDRESS, "127.0.0.1:11211);
...
Job job = new Job(conf, "word count");
...
如何运行一个作业取决于如何配置Hadoop:
如果配置了独立的mapred-site.xml
:
hadoop --config [path_to_config] [arguments]
如果修改了默认的mapred-site.xml
,那么--config
选项就不是必要的了:
hadoop [arguments]
如果通过编程方式启动作业,那么像下面这样提交他:
...
Job job = new Job(conf, "word count");
...
job.submit();
本章节描述了如何在Apache Hadoop发行版上安装Ignite Hadoop加速器。
安装由如下的主要步骤组成:
IGNITE_HOME
环境变量,指向上一步Ignite Hadoop加速器的解压目录;HADOOP_HOME
环境变量设置正确,这对于Ignite查找必须的Hadoop的类是必要的;$IGNITE_HOME/config/default-config.xml
,将secondaryFileSystem
属性的注释去掉,然后设置正确的HDFS
URI。
<bean class="org.apache.ignite.configuration.FileSystemConfiguration">
...
<property name="secondaryFileSystem">
<bean class="org.apache.ignite.hadoop.fs.IgniteHadoopIgfsSecondaryFileSystem">
<property name="fileSystemFactory">
<bean class="org.apache.ignite.hadoop.fs.CachingHadoopFileSystemFactory">
<property name="uri" value="hdfs://your_hdfs_host:9000"/>
</bean>
</property>
</bean>
</property>
</bean>
如果需要,也可以向文件系统工厂传递额外的Hadoop配置文件:
<bean class="org.apache.ignite.hadoop.fs.CachingHadoopFileSystemFactory">
<property name="uri" value="hdfs://your_hdfs_host:9000"/>
<property name="configPaths">
<list>
<value>/path/to/core-site.xml</value>
</list>
</property>
</bean>
$IGNITE_HOME/bin/ignite.sh
IGNITE_HOME
环境变量,指向Ignite Hadoop加速器的解压目录;
cd $HADOOP_HOME/share/hadoop/common/lib
ln -s $IGNITE_HOME/libs/ignite-core-[version].jar
ln -s $IGNITE_HOME/libs/ignite-shmem-1.0.0.jar
ln -s $IGNITE_HOME/libs/ignite-hadoop/ignite-hadoop-[version].jar
core-site.xml
和mapred-site.xml
,确定使用那个文件系统和作业跟踪器。 core-site.xml
和mapred-site.xml
文件到那里,然后应用必要的配置变更,比如:
mkdir ~/ignite_conf
cd ~/ignite_conf
cp $HADOOP_HOME/etc/hadoop/core-site.xml .
cp $HADOOP_HOME/etc/hadoop/mapred-site.xml .
如果要使用IGFS,需要在core-site.xml
中添加类名映射:
<configuration>
...
<property>
<name>fs.igfs.impl</name>
<value>org.apache.ignite.hadoop.fs.v1.IgniteHadoopFileSystem</value>
</property>
<property>
<name>fs.AbstractFileSystem.igfs.impl</name>
<value>org.apache.ignite.hadoop.fs.v2.IgniteHadoopFileSystem</value>
</property>
...
</configuration>
如果要使用IGFS作为默认的文件系统(即没有igfs://
前缀),那么应该设置core-site.xml
中的fs.default.name
属性:
<configuration>
...
<property>
<name>fs.default.name</name>
<value>igfs://igfs@/</value>
</property>
...
</configuration>
如果希望使用Ignite的Hadoop加速器用于MapReduce作业,那么应该将mapred-site.xml
指向正确的作业跟踪器:
<configuration>
...
<property>
<name>mapreduce.framework.name</name>
<value>ignite</value>
</property>
<property>
<name>mapreduce.jobtracker.address</name>
<value>[your_host]:11211</value>
</property>
...
</configuration>
作为替代,也可以使用Ignite发行版自带的配置文件,位于$IGNITE_HOME/config/hadoop
目录。
到这一步安装已经完成然后就可以启动运行作业或者处理IGFS了。
查询IGFS:
hadoop --config ~/ignite_conf fs -ls /
运行一个作业:
hadoop --config ~/ignite_conf jar [your_job]
本章节描述了如何在Cloudera CDH发行版上安装Ignite Hadoop加速器。
安装由如下的主要步骤组成:
IGNITE_HOME
环境变量,指向上一步Ignite Hadoop加速器的解压目录;usr/lib
目录:
export HADOOP_HOME=/usr/lib/hadoop/
export HADOOP_COMMON_HOME=/usr/lib/hadoop/
export HADOOP_HDFS_HOME=/usr/lib/hadoop-hdfs/
export HADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce/
$IGNITE_HOME/config/default-config.xml
,取消secondaryFileSystem
属性的注释并且设置正确的HDFS
URI:
<bean class="org.apache.ignite.configuration.FileSystemConfiguration">
...
<property name="secondaryFileSystem">
<bean class="org.apache.ignite.hadoop.fs.IgniteHadoopIgfsSecondaryFileSystem">
<property name="fileSystemFactory">
<bean class="org.apache.ignite.hadoop.fs.CachingHadoopFileSystemFactory">
<property name="uri" value="hdfs://your_hdfs_host:8020"/>
</bean>
</property>
</bean>
</property>
</bean>
如果需要,也可以给文件系统工厂传递额外的Hadoop配置文件:
<bean class="org.apache.ignite.hadoop.fs.CachingHadoopFileSystemFactory">
<property name="uri" value="hdfs://your_hdfs_host:9000"/>
<property name="configPaths">
<list>
<value>/path/to/core-site.xml</value>
</list>
</property>
</bean>
$IGNITE_HOME/bin/ignite.sh
cd /usr/lib/hadoop/lib
ln -s $IGNITE_HOME/libs/ignite-core-[version].jar
ln -s $IGNITE_HOME/libs/ignite-shmem-1.0.0.jar
ln -s $IGNITE_HOME/libs/ignite-hadoop/ignite-hadoop-[version].jar
core-site.xml
和mapred-site.xml
,确定使用那个文件系统和作业跟踪器。 core-site.xml
和mapred-site.xml
文件到那里,然后应用必要的配置变更,比如:
mkdir ~/ignite_conf
cd ~/ignite_conf
cp /usr/hdp/current/hadoop-client/etc/core-site.xml .
cp /usr/hdp/current/hadoop-client/etc/mapred-site.xml .
如果要使用IGFS,需要在core-site.xml
中添加类名映射:
<configuration>
...
<property>
<name>fs.igfs.impl</name>
<value>org.apache.ignite.hadoop.fs.v1.IgniteHadoopFileSystem</value>
</property>
<property>
<name>fs.AbstractFileSystem.igfs.impl</name>
<value>org.apache.ignite.hadoop.fs.v2.IgniteHadoopFileSystem</value>
</property>
...
</configuration>
如果要使用IGFS作为默认的文件系统(即没有igfs://
前缀),那么应该设置core-site.xml
中的fs.default.name
属性:
<configuration>
...
<property>
<name>fs.default.name</name>
<value>igfs://igfs@/</value>
</property>
...
</configuration>
如果希望使用Ignite的Hadoop加速器用于MapReduce作业,那么应该将mapred-site.xml
指向正确的作业跟踪器:
<configuration>
...
<property>
<name>mapreduce.framework.name</name>
<value>ignite</value>
</property>
<property>
<name>mapreduce.jobtracker.address</name>
<value>[your_host]:11211</value>
</property>
...
</configuration>
作为替代,也可以使用Ignite发行版自带的配置文件,位于$IGNITE_HOME/config/hadoop
目录。
到这一步安装已经完成然后就可以启动运行作业或者处理IGFS了。
查询IGFS:
hadoop --config ~/ignite_conf fs -ls /
运行一个作业:
hadoop --config ~/ignite_conf jar [your_job]
本章节描述了如何在Hortonworks HDP发行版上安装Ignite Hadoop加速器。
安装由如下的主要步骤组成:
IGNITE_HOME
环境变量,指向上一步Ignite Hadoop加速器的解压目录;usr/hdp/current
目录:
export HADOOP_HOME=/usr/hdp/current/
export HADOOP_COMMON_HOME=/usr/hdp/current/hadoop-client/
export HADOOP_HDFS_HOME=/usr/hdp/current/hadoop-hdfs-client/
export HADOOP_MAPRED_HOME=/usr/hdp/current/hadoop-mapreduce-client/
$IGNITE_HOME/config/default-config.xml
,取消secondaryFileSystem
属性的注释并且设置正确的HDFS
URI:
<bean class="org.apache.ignite.configuration.FileSystemConfiguration">
...
<property name="secondaryFileSystem">
<bean class="org.apache.ignite.hadoop.fs.IgniteHadoopIgfsSecondaryFileSystem">
<property name="fileSystemFactory">
<bean class="org.apache.ignite.hadoop.fs.CachingHadoopFileSystemFactory">
<property name="uri" value="hdfs://your_hdfs_host:9000"/>
</bean>
</property>
</bean>
</property>
</bean>
如果需要,也可以给文件系统工厂传递额外的Hadoop配置文件:
<bean class="org.apache.ignite.hadoop.fs.CachingHadoopFileSystemFactory">
<property name="uri" value="hdfs://your_hdfs_host:9000"/>
<property name="configPaths">
<list>
<value>/path/to/core-site.xml</value>
</list>
</property>
</bean>
$IGNITE_HOME/bin/ignite.sh
cd /usr/hdp/current/hadoop-client/lib
ln -s $IGNITE_HOME/libs/ignite-core-[version].jar
ln -s $IGNITE_HOME/libs/ignite-shmem-1.0.0.jar
ln -s $IGNITE_HOME/libs/ignite-hadoop/ignite-hadoop-[version].jar
core-site.xml
和mapred-site.xml
,确定使用那个文件系统和作业跟踪器。 core-site.xml
和mapred-site.xml
文件到那里,然后应用必要的配置变更,比如:
mkdir ~/ignite_conf
cd ~/ignite_conf
cp /usr/hdp/current/hadoop-client/etc/core-site.xml .
cp /usr/hdp/current/hadoop-client/etc/mapred-site.xml .
如果要使用IGFS,需要在core-site.xml
中添加类名映射:
<configuration>
...
<property>
<name>fs.igfs.impl</name>
<value>org.apache.ignite.hadoop.fs.v1.IgniteHadoopFileSystem</value>
</property>
<property>
<name>fs.AbstractFileSystem.igfs.impl</name>
<value>org.apache.ignite.hadoop.fs.v2.IgniteHadoopFileSystem</value>
</property>
...
</configuration>
如果要使用IGFS作为默认的文件系统(即没有igfs://
前缀),那么应该设置core-site.xml
中的fs.default.name
属性:
<configuration>
...
<property>
<name>fs.default.name</name>
<value>igfs://igfs@/</value>
</property>
...
</configuration>
如果希望使用Ignite的Hadoop加速器用于MapReduce作业,那么应该将mapred-site.xml
指向正确的作业跟踪器:
<configuration>
...
<property>
<name>mapreduce.framework.name</name>
<value>ignite</value>
</property>
<property>
<name>mapreduce.jobtracker.address</name>
<value>[your_host]:11211</value>
</property>
...
</configuration>
作为替代,也可以使用Ignite发行版自带的配置文件,位于$IGNITE_HOME/config/hadoop
目录。
到这一步安装已经完成然后就可以启动运行作业或者处理IGFS了。
查询IGFS:
hadoop --config ~/ignite_conf fs -ls /
运行一个作业:
hadoop --config ~/ignite_conf jar [your_job]
本章节描述如果在经过Ignite加速后的Hadoop上正确配置和启动Hive,还显示了通过这样的配置如何启动HiveServer2以及一个远程客户端。
假定Hadoop已经安装和配置好以运行在Ignite上,然后配置了IGFS文件系统以及MapReduce作业跟踪器功能的Ignite节点也已经启动运行。
还需要安装Hive。
下面是在Ignited
的Hadoop上运行Hive的必要步骤:
Hadoop
的正确位置,这个可以通过将可执行文件的路径加入PATH
环境变量(注意可执行的文件大都位于一个叫做bin/
的文件夹),或者通过指定HADOOP_HOME
环境变量实现;core-site.xml
,hive-site.xml
,mapred-site.xml
),这个可以通过将这些文件放入一个目录然后将该目录的路径作为HIVE_CONF_DIR
环境变量值来实现。配置模板
建议使用Hive模板配置文件<IGNITE_HOME>/config/hadoop/hive-site.ignite.xml
来获得Ignite指定的设置。有一个与Hive和Hadoop中的不同
jline
库版本有关的潜在问题,他可以通过设置HADOOP_USER_CLASSPATH_FIRST=true
环境变量来解决。
为了方便,也可以创建一个简单的脚本来正确地设置所有必要的变量然后启动Hive,像下面这样:
# Specify Hive home directory:
export HIVE_HOME=<Hive installation directory>
# Specofy configuration files location:
export HIVE_CONF_DIR=<Path to our configuration folder>
# If you did not set hadoop executable in PATH, specify Hadoop home explicitly:
export HADOOP_HOME=<Hadoop installation folder>
# Avoid problem with different 'jline' library in Hadoop:
export HADOOP_USER_CLASSPATH_FIRST=true
${HIVE_HOME}/bin/hive "${@}"
这个脚本可以用于在交互式控制台上启动Hive:
$ hive-ig cli
hive> show tables;
OK
u_data
Time taken: 0.626 seconds, Fetched: 1 row(s)
hive> quit;
$
如果为了增强的客户端功能希望使用HiveServer2,要启动它也可以使用上面创建的脚本。
hive-ig --service hiveserver2
服务启动之后,可以使用任何有效的客户端(比如beeline)连接它。作为一个远程客户端,beeline
可以在任意主机运行,他也不需要任何特别的环境来与Ignited
Hive一起工作,下面是示例:
$ ./beeline
Beeline version 1.2.1 by Apache Hive
beeline> !connect jdbc:hive2://localhost:10000 scott tiger org.apache.hive.jdbc.HiveDriver
Connecting to jdbc:hive2://localhost:10000
Connected to: Apache Hive (version 1.2.1)
Driver: Hive JDBC (version 1.2.1)
Transaction isolation: TRANSACTION_REPEATABLE_READ
0: jdbc:hive2://localhost:10000> show tables;
+-----------+--+
| tab_name |
+-----------+--+
| u_data |
+-----------+--+
1 row selected (0.957 seconds)
0: jdbc:hive2://localhost:10000>