hadoop-2.0.0-cdh4.2.0 安装

一、前言

Cloudera于近日释放了Impala 1.0版本,新的版本实现与Hadoop的完全整合,支持ANSI-92 SQL所有子集。Hive更是再次躺枪——在与Hive的对比中,Impala并发客户端处理的速度上甚至超越了单机Hive!

在去年10月刘江总编的报道中,我们首次认识了Impala这只高脚羚——其主要分布在东非,在Dremel的启发下开发。文章中还指出Impala不再使用缓慢的Hive+MapReduce批处理,而是通过与商用并行关系数据库中类似的分布式查询引擎(由Query Planner、Query Coordinator和Query Exec Engine三部分组成),可以直接从HDFS或者HBase中用SELECT、JOIN和统计函数查询数据,从而大大降低了延迟。其架构如下图所示:

5月1日,Cloudera释放了Impala 1.0版本;对比旧版本,新的版本基于社区回馈和现实世界中不同的负载做出了修改,其根本的设计理念是与Hadoop无缝的整合——共同使用一个存储池、元数据模型、安全框架以及系统资源集。这种整合允许Impala用户从成本、灵活性、以及Hadoop交互式SQL查询中获利,并且能让Hadoop用户在MapReduce和其它的框架上做更好的SQL查询。最终达到所有的数据都可以做交互式分析以及做其它类型的处理,免去了ETL过程。

注:impala只提供64位系统RPM安装包,所以,请务必安装64位Linux操作系统。本手册安装基于64位CentoOS 6.4

安装基本环境介绍:(本次安装实验基于两台装有64位CentOS 6.4的虚拟机进行)

Master:cdh1,IP192.168.1.70

Slave:cdh2,IP192.168.1.71

JDK:jdk-7u21-linux-x64

MYSQL:MySQL-server-community-5.1.54-1.rhel5.x86_64

           MySQL-client-community-5.1.54-1.rhel5.x86_64

二、JDK安装

从官网下载Linux 64痊JDK(本文选取的是64位解压版)

下载地址:http://download.oracle.com/otn-pub/java/jdk/7u21-b11/jdk-7u21-linux-x64.tar.gz

本文下载到/opt/解压tar –zxvf jdk-7u21-linux-x64.tar.gz

配置环境变量

Vi /etc/profile,在文件末尾处加入

export JAVA_HOME=/opt/jdk1.7.0_21

export PATH=$JAVA_HOME/bin:$PATH

保存退出

然后source /etc/profile让环境变量生效,验证安装是否成功

[root@cdh1 ~]#java -version

java version"1.7.0_21"

Java(TM) SERuntime Environment (build 1.7.0_21-b11)

Java HotSpot(TM)64-Bit Server VM (build 23.21-b01, mixed mode)

三、hadoop-2.0.0-cdh4.2.0安装

3.1创建hadoop用户

在cdh1和cdh2分别创建hadoop用户.

useradd hadoop

passwd hadoop 6yhn7ujm

3.2配置SSH无密码访问

3.2.1修改主机名与配置host访问

1、分别修改master和slave /etc/sysconfig/network内容如下

cdh1:

NETWORKING=yes

HOSTNAME=cdh1

cdh2:

NETWORKING=yes

HOSTNAME=cdh2

2、修改两台现的/etc/hosts将IP与主机名相对应

vi /etc/hosts

cdh1:

192.168.42.128 cdh1

192.168.42.129 cdh2

cdh2:

192.168.42.128 cdh1

192.168.42.129 cdh2

重新启动计算机,使主机名生效

3.2.2生成密钥

两台机分别生成密钥

su  hadoop切换到hadoop用户下

ssh-keygen  -t rsa -f ~/.ssh/id_rsa

一路回车。

hadoop需要cdh1->cdh2的无密码访问和cdh1到cdh1的无密码访问(因为本次实验secondaryNamenode为cdh1)

cdh1 ->cdh2:

cdh1 :    scp id_rsa.pub hadoop@cdh2:/home/hadoop/.ssh/cdh1.pub

cdh2 :    cat cdh1.pub >> authorized_keys

cdh1 :    chmod 644 id_rsa.pub

cdh2 :    chmod 644 authorized_keys

cdh1 :    chmod 700 ~/.ssh

上叙完成cdh1->cdh2的无密码访问,同理,在cdh1的~/.ssh/下

cat id_rsa.pub >> authorized_keys

chmod 644 id_rsa.pub

chmod 644 authorized_keys

chmod 700 ~/.ssh

完成cdh1到cdh1的无密码访问

3.3安装hadoop-2.0.0-cdh4.2.0

1、从cloudera官网下载hadoop-2.0.0-cdh4.2.0.tar.gzhttp://archive.cloudera.com/cdh4/cdh/4/hadoop-2.0.0-cdh4.2.0.tar.gz

使用hadoop用户将下载文件解压到安装目录,本文目录:/home/clodaera/hadoop-2.0.0-cdh4.2.0

本节定义HADOOP_HOME = /home/clodaera/hadoop-2.0.0-cdh4.2.0

并在/home/下建立hadoop_file,将文夹件授予给hadoop,用来设置hadoop相关目录

2、修改配置文件

在cdh1上

hadoop_home/etc/hadoop下

修改core-site.xml,加入如下配置

      <property>

               <name>fs.default.name</name>

               <value>hdfs://cdh1:9000</value>

        </property>

        <property>

               <name>hadoop.tmp.dir</name>

                <value>/home/hadoop_file/tmp</value>

        </property>

修改hdfs-site.xml

<property>

<name>dfs.name.dir</name>

<value>/home/hadoop_file/name</value>

</property>

<property>

<name>dfs.data.dir</name>

<value>/home/hadoop_file/data</value>

</property>

<property>

<name>dfs.replication</name>

<value>1</value>

</property>

修改yarn-site.xml

        <property>

                           <name>yarn.resoucemanager.address</name>

                           <value>cdh1:8032</value>

        </property>

        <property>

                    <name>yarn.resourcemanager.scheduler.address</name>

                    <value>cdh1:8030</value>

        </property>

        <property>

                           <name>yarn.resourcemanager.resource-tracker.address</name>

                             <value>cdh1:8031</value>

        </property>

        <property>

                    <name>yarn.resourcemanager.admin.address</name>

                    <value>cdh1:8033</value>

        </property>

        <property>

<name>yarn.nodemanager.aux-services</name>

<value>mapreduce.shuffle</value>

</property>

设置环境变量:

修改/etc/profile 在最尾处加入如下内容

export HADOOP_HDFS_HOME=/home/hadoop/clodaera/hadoop-2.0.0-cdh4.2.0

export YARN_HOME=/home/hadoop/clodaera/hadoop-2.0.0-cdh4.2.0

export HADOOP_HOME=/home/hadoop/clodaera/hadoop-2.0.0-cdh4.2.0

su source /etc/profile,生效环境变量

3、将/home/clodaera/hadoop-2.0.0-cdh4.2.0整个目录及其内容传输到cdh2上,目录结构可同cdh1,并按cdh1所讲的修改和生效环境变量。

4、启动hadoop

启动之前,应先格式化文件系统

hadoop_home/bin下

./hadoop namenode -format

格式化成功后

在cdh1上,hadoop_home/sbin下。执行

 

错误是:The authenticity of host 192.168.0.xxx can't be established.

以前和同事碰到过这个问题,解决了,没有记录,这次又碰到了不知道怎么处理,还好有QQ聊天记录,查找到一下,找到解决方案:

执行ssh  -o StrictHostKeyChecking=no  192.168.0.xxx 就OK

./start-all.sh来启动hadoop所有进程:(启动成功,输入如下信息)

cdh1:starting namenode, logging to /home/clodaera/hadoop-2.0.0-cdh4.2.0/logs/hadoop-hadoop-namenode-cdh1.out

cdh2:starting datanode, logging to/home/clodaera/hadoop-2.0.0-cdh4.2.0/logs/hadoop-hadoop-datanode-cdh2.out

Startingsecondary namenodes [0.0.0.0]

0.0.0.0:starting secondarynamenode, logging to /home/clodaera/hadoop-2.0.0-cdh4.2.0/logs/hadoop-hadoop-secondarynamenode-cdh1.out

starting yarndaemons

startingresourcemanager, logging to/home/clodaera/hadoop-2.0.0-cdh4.2.0/logs/yarn-hadoop-resourcemanager-cdh1.out

cdh2: startingnodemanager, logging to /home/clodaera/hadoop-2.0.0-cdh4.2.0/logs/yarn-hadoop-nodemanager-cdh2.out

若启动不成功:可查看日志分析出错原因

hadoop_home/logs/下

hadoop-hadoop-namenode-cdh1 关于hdfs namenode日志

hadoop-hadoop-secondarynamenode-cdh1关于hdfs secondarynamenode日志

yarn-hadoop-resourcemanager-cdh1.logyarn resourcemanager日志

同理,在cdh2上,也有相对应的日志信息

启动成功后,也可以通过浏览器访问:

http://192.168.1.70:8088/cluster

四、Mysql安装

由于本次实验采用MYSQL作为HIVE存储元,本次采用RPM安装MYSQL

1、建议以rpm方式安装,必须同时具备服务端和客户端两个rpm安装包;本文以rpm方式进行安装;

2、以mysql5.1.54安装为例,准备好rpm安装包

服务端:MySQL-server-community-5.1.54-1.rhel5.x86_64.rpm

客户端:MySQL-client-community-5.1.54-1.rhel5.x86_64.rpm

4.1安装开始

1、检查是否已经安装mysql

[root@localhost~]# rpm -qa|grep -i mysql

MySQL-server-community-5.1.54-1.rhel5

MySQL-client-community-5.1.54-1.rhel5

如果有显示则先卸载该mysql,如:

[root@localhost~]#rpm –e --nodeps  MySQL-server-community-5.1.54-1.rhel5

[root@localhost~]#rpm –e --nodeps  MySQL-client-community-5.1.54-1.rhel5

[root@localhost ~]# rm –rf /var/lib/mysql/

如果还有其他一些mysql包,用rpm命令卸载不了,可用yum命令强制卸载:

[root@localhost~]#yum remove mysql

2、新建mysql用户

[root@localhost ~]# useraddmysql

[root@localhost ~]# passwdmysql

3、创建以下三个目录

[root@localhost ~]# mkdir -p/home/mysql/mysqlLog/mysql-bin

[root@localhost ~]# mkdir -p /home/mysql/mysqldata/

[root@localhost ~]# mkdir -p /home/mysql/loggroup/

[root@localhost ~]# chown -R mysql:mysql /home/mysql

4、上传rpm安装包和my.cnf到服务器,如/home/mysql/下;将my.cnf拷贝至/etc/下:

[root@localhost mysql]# cpmy.cnf /etc

5、安装rpm包

[root@localhost mysql]# rpm-ivhMySQL-server-community-5.1.54-1.rhel5.x86_64.rpm

[root@localhost mysql]# rpm-ivhMySQL-client-community-5.1.54-1.rhel5.x86_64.rpm

如无错误提示且mysql启动成功则表示mysql安装成功

4.2安装后的配置

1、定制密码1qaz2wsx(根据自己需要修改)

[root@localhost mysql]# /usr/bin/mysqladmin -u root password 'root’

2、为数据库配置远程连接权限

--root用户登陆数据库

[root@localhost mysql]#mysql -u root -p root

SET PASSWORD FOR 'root'@'localhost' = PASSWORD('root');

--采用授权法

--1、以用户名:root密码:1qaz2wsx从任何主机连接到mysql服务器

mysql>GRANT ALL PRIVILEGES ON *.* TO 'root'@'%'IDENTIFIED BY 'root' WITH GRANT OPTION;

 

--使配置生效

mysql>FLUSH PRIVILEGES;

3、查看数据引擎

mysql>show engines;

4、数据库安装目录

mysql数据库安装完成后,默认的安装目录为:/var/lib/mysql

4.3、设置开机启动

[root@localhost mysql]# echo “service mysql start” >> /etc/rc.d/rc.local

五、hive-0.10.0-cdh4.2.0安装

5.1、下载软件

从http://archive.cloudera.com/cdh4/cdh/4/hive-0.10.0-cdh4.2.0.tar.gz下载HIVE

本试验装HIVE安装在cdh1上,上传HIVE到/home/clodaera/.并解压

hive_home=/home/clodaera/hive-0.10.0-cdh4.2.0

5.2、修改HIVE配置文件

进入hive_home/conf/

将目录下的所有文件分别重命名,文件名去掉.template,

修改hive-default.xml为hive-site.xml

修改hive-site.xml内容,使HIVE用mysql作为存储元

<property>

  <name>javax.jdo.option.ConnectionURL</name>

<value>jdbc:mysql://localhost:3306/hive?createDatabaseIfNotExist=true</value>

  <description>JDBC connect string for aJDBC metastore</description>

</property>

<property>

  <name>javax.jdo.option.ConnectionDriverName</name>

<value>com.mysql.jdbc.Driver</value>

  <description>Driver class name for aJDBC metastore</description>

</property>

<property>

  <name>javax.jdo.option.ConnectionUserName</name>

  <value>root</value>

  <description>username to use againstmetastore database</description>

</property>

<property>

  <name>javax.jdo.option.ConnectionPassword</name>

  <value>root</value>

  <description>password to use againstmetastore database</description>

</property>

在hive-site.xml中找到并修改上面四个属性。

特别提醒:官方的配置文件有些地方有语法错误,比如<description></description>这种没有配对出现,若没修改好,则启动时会报错,建议找出修改,若找不到,就在启动HIVE的时候,根据报错去修改。

3、加入HIVE的环境变量:在/etc/profile中加入以下

exportHIVE_HOME=/home/clodaera/hive-0.10.0-cdh4.2.0

exportHIVE_CONF_DIR=/home/clodaera/hive-0.10.0-cdh4.2.0/conf

4、加入连接驱动

将mysql连接驱动(本文采用mysql-connector-java-5.1.21.jar)复制到hive_home/lib目录下。

5.3、启动HIVE

进入hive_home/bin下

./hive

可以启动HIVE

Logging initializedusing configuration infile:/home/clodaera/hive-0.10.0-cdh4.2.0/conf/hive-log4j.properties

Hive historyfile=/tmp/hadoop/hive_job_log_hadoop_201306111624_1853532378.txt

SLF4J: Classpath contains multiple SLF4J bindings.

SLF4J: Foundbinding in [jar:file:/home/clodaera/hadoop-2.0.0-cdh4.2.0/share/hadoop/common/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Foundbinding in[jar:file:/home/clodaera/hive-0.10.0-cdh4.2.0/lib/slf4j-log4j12-1.6.1.jar!/org/slf4j/impl/StaticLoggerBinder.class]

SLF4J: Seehttp://www.slf4j.org/codes.html#multiple_bindings for an explanation.

hive>

测试

执行HQL  create table hivtest(id int ,name string);

若有成功创建,在mysql中,会创建一个hive的数据库,进行如相操作,可查看HIVE创建的表:

六、impala 1.0.1安装

Impala由以下几块组成:

State Store:对应进程为statestored(笔者这里使用的Impala版本为1.0.1)

用于协调各个运行impalad的实例之间的信息关系,Impala正是通过这些信息去定位查询请求所要的数据。换句话说,state store的作用主要为跟踪各个impalad实例的位置和状态,让各个impalad实例以集群的方式运行起来。

与HDFS的NameNode不一样,虽然State Store一般只安装一份,但一旦State Store挂掉了,各个impalad实例却仍然会保持集群的方式处理查询请求,只是无法将各自的状态更新到State Store中,如果这个时候新加入一个impalad实例,则新加入的impalad实例不为现有集群中的其他impalad实例所识别(事实上,经笔者测试,如果impalad启动在statestored之后,根本无法正常启动,因为impalad启动时是需要指定statestored的主机信息的)。然而,State Store一旦重启,则所有State Store所服务的各个impalad实例(包括state store挂掉期间新加入的impalad实例)的信息(由impalad实例发给state store)都会进行重建。

Impalad:对应进程为impalad(核心进程,数据的计算就靠这个进程来执行)

该进程应运行在DataNode机器上(建议每个DataNode机器运行一个impalad,官方的意思似乎这种建议是必须的),每个impalad实例会接收、规划并调节来自ODBC或Impala Shell等客户端的查询。每个impalad实例会充当一个Worker,处理由其它impalad实例分发出来的查询片段(query fragments)。客户端可以随便连接到任意一个impalad实例,被连接的impalad实例将充当本次查询的协调者(Ordinator),将查询分发给集群内的其它impalad实例进行并行计算。当所有计算完毕时,其它各个impalad实例将会把各自的计算结果发送给充当Ordinator的impalad实例,由这个Ordinator实例把结果返回给客户端。每个impalad进程可以处理多个并发请求。

Impala shell:这是一个客户端工具

该客户端工具提供一个交互接口,供使用者发起数据查询或管理任务,比如连接到impalad。这些查询请求会传给JDBC这个标准查询接口。说白了,就是一个命令行客户端。日后你便是通过它来查询数据的。

6.1 impala安装下载

从http://archive.cloudera.com/impala/redhat/6/x86_64/impala/1/RPMS/x86_64/

下载该地址下的所有rpm包

从http://archive.cloudera.com/impala/redhat/6/x86_64/impala/1/RPMS/noarch/

下载bigtop-utils-0.4+300-1.cdh4.0.1.p0.1.el6.noarch.rpm

另外,安装需要libevent-1.4.13-4.el6.x86_64.rpm

可从http://rpm.pbone.net/index.php3?stat=26&dist=79&size=67428&name=libevent-1.4.13-4.el6.x86_64.rpm下载

若安装中还需要其它rpm包,可到http://rpm.pbone.net/搜索下载

6.2 impala安装

1、在datanodet和hive节点分别安装如下RPM包

rpm –ivh文件名

impala-1.0.1-1.p0.888.el6.x86_64.rpm

impala-server-1.0.1-1.p0.888.el6.x86_64.rpm

impala-state-store-1.0.1-1.p0.888.el6.x86_64.rpm

impala-shell-1.0.1-1.p0.888.el6.x86_64.rpm

libevent-1.4.13-4.el6.x86_64.rpm

bigtop-utils-0.4+300-1.cdh4.0.1.p0.1.el6.noarch.rpm

2、修改配置文件:

对于每台机的impala安装完成后。默认配置文件目录位于/etc/impala/conf

将cd1上的hive-site.xml、core-site.xml、hdfs-site.xml

三个文件复制到该目录下,并修改

hive-site.xml

在datanode的/etc/impala/conf/hiv-site.xml中修改

<property>

<name>javax.jdo.option.ConnectionURL</name>

  <value>jdbc:mysql://192.168.1.70:3306/hive?createDatabaseIfNotExist=true</value>

  <description>JDBC connect string for aJDBC metastore</description>

</property>

将mysql地址修改为mysql所在主机的IP

在所有主机/etc/impala/conf/hdfs-site.xml中加入如下配置

<property>

<name>dfs.client.use.legacy.blockreader.local</name>

<value>true</value>

</property>

<property>

<name>dfs.datanode.data.dir.perm</name>

<value>750</value>

</property>

<property>

<name>dfs.block.local-path-access.user</name>

<value>impala</value>

</property>

<property>

<name>dfs.client.file-block-storage-locations.timeout</name>

<value>3000</value>

</property>

<property>

<name>dfs.datanode.hdfs-blocks-metadata.enabled</name>

<value>true</value>

</property>

3、impala启动会加载默认配置

修改每台机的/etc/default/impala(红色部分为要修改部分)

IMPALA_STATE_STORE_HOST=192.168.1.70

IMPALA_STATE_STORE_PORT=24000

IMPALA_BACKEND_PORT=22000

IMPALA_LOG_DIR=/var/log/impala

IMPALA_STATE_STORE_ARGS="-log_dir=${IMPALA_LOG_DIR} -state_store_port=${IMPALA_STATE_STORE_PORT}"

IMPALA_SERVER_ARGS="\

    -log_dir=${IMPALA_LOG_DIR} \

   -state_store_port=${IMPALA_STATE_STORE_PORT} \

    -use_statestore \

    -state_store_host=${IMPALA_STATE_STORE_HOST}\

    -be_port=${IMPALA_BACKEND_PORT}"

ENABLE_CORE_DUMPS=false

LIBHDFS_OPTS=-Djava.library.path=/usr/lib/impala/lib

MYSQL_CONNECTOR_JAR=/home/clodaera/hive-0.10.0-cdh4.2.0/lib/mysql-connector-java-5.1.21.jar

IMPALA_BIN=/usr/lib/impala/sbin

IMPALA_HOME=/usr/lib/impala

HIVE_HOME=/home/clodaera/hive-0.10.0-cdh4.2.0

#HBASE_HOME=/usr/lib/hbase

IMPALA_CONF_DIR=/etc/impala/conf

HADOOP_CONF_DIR=/home/clodaera/hadoop-2.0.0-cdh4.2.0/etc/hadoop

HIVE_CONF_DIR=/home/clodaera/hive-0.10.0-cdh4.2.0/conf

#HBASE_CONF_DIR=/etc/impala/conf

在第一次启动impalad的时候,你可能会遇到impalad报类似找不到JDBC数据库驱动(假设为MySQL)的问题,其实是因为impalad默认使用的数据库驱动包的位置为:/usr/share/java/mysql-connector-java.jar,该配置默认由/etc/default/impala文件中的MYSQL_CONNECTOR_JAR项指定,读者可在~/.bash_profile文件中修改为自己的驱动文件路径,如下为笔者在~/.bash_profile中添加的项:

export MYSQL_CONNECTOR_JAR=/home/clodaera/hive-0.10.0-cdh4.2.0/lib/mysql-connector-java-5.1.21.jar,别忘了修改后执行一下source ~/.bash_profile来是修改生效

6.3启动impala

在hive所在节点启动statestored(默认端口为24000)

statestored-state_store_port=24000

如果statestore正常启动,可以在/tmp/statestored.INFO查看。如果出现异常,可以查看/tmp/statestored.ERROR定位错误信息。

在所有impalad节点上:

impalad -state_store_host=cdh1 -nn= cdh1  -nn_port=9001 -hostname=cdh2

如果impalad正常启动,可以在/tmp/ impalad.INFO查看。如果出现异常,可以查看/tmp/impalad.ERROR定位错误信息。

启动后,在hive使用impala-shell可进入impala shell

并使用connect xxx.xxx.xxx.xxx连接到impala

多个impala则执行多次connect

本实验connect 192.168.1.71

七、测试

分别在hive和impala中测试selectcount(1) from hivetest;

7.1 hive查询测试

7.2 impala查询测试

你可能感兴趣的:(hadoop-2.0.0-cdh4.2.0 安装)