yum安装CDH5.5 hive、impala的过程详解
一、安装hive
组件安排如下:
172.16.57.75bd-ops-test-75mysql-server 172.16.57.77bd-ops-test-77Hiveserver2HiveMetaStore
1.安装hive
在77上安装hive:
#yuminstallhivehive-metastorehive-server2hive-jdbchive-hbase-y
在其他节点上可以安装客户端:
#yuminstallhivehive-server2hive-jdbchive-hbase-y
2.安装mysql
yum方式安装mysql:
#yuminstallmysqlmysql-develmysql-servermysql-libs-y
启动数据库:
#配置开启启动 #chkconfigmysqldon #servicemysqldstart
安装jdbc驱动:
#yuminstallmysql-connector-java #ln-s/usr/share/java/mysql-connector-java.jar/usr/lib/hive/lib/mysql-connector-java.jar
设置mysql初始密码为bigdata:
#mysqladmin-urootpassword'bigdata'
进入数据库后执行如下:
CREATEDATABASEmetastore; USEmetastore; SOURCE/usr/lib/hive/scripts/metastore/upgrade/mysql/hive-schema-1.1.0.mysql.sql; CREATEUSER'hive'@'localhost'IDENTIFIEDBY'hive'; GRANTALLPRIVILEGESONmetastore.*TO'hive'@'localhost'; GRANTALLPRIVILEGESONmetastore.*TO'hive'@'%'; FLUSHPRIVILEGES;
注意:创建的用户为hive,密码为hive,你可以按自己需要进行修改。
修改hive-site.xml文件中以下内容:
<property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://172.16.57.75:3306/metastore?useUnicode=true&characterEncoding=UTF-8</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property>
3.配置hive
修改/etc/hadoop/conf/hadoop-env.sh,添加环境变量HADOOP_MAPRED_HOME,如果不添加,则当你使用yarn运行mapreduce时候会出现UNKOWNRPCTYPE的异常
exportHADOOP_MAPRED_HOME=/usr/lib/hadoop-mapreduce
在hdfs中创建hive数据仓库目录:
hive的数据仓库在hdfs中默认为/user/hive/warehouse,建议修改其访问权限为1777,以便其他所有用户都可以创建、访问表,但不能删除不属于他的表。
每一个查询hive的用户都必须有一个hdfs的home目录(/user目录下,如root用户的为/user/root)
hive所在节点的/tmp必须是world-writable权限的。
创建目录并设置权限:
#sudo-uhdfshadoopfs-mkdir/user/hive #sudo-uhdfshadoopfs-chownhive/user/hive #sudo-uhdfshadoopfs-mkdir/user/hive/warehouse #sudo-uhdfshadoopfs-chmod1777/user/hive/warehouse #sudo-uhdfshadoopfs-chownhive/user/hive/warehouse
修改hive-env设置jdk环境变量:
#vim/etc/hive/conf/hive-env.sh exportJAVA_HOME=/opt/programs/jdk1.7.0_67
启动hive-server和metastore:
#servicehive-metastorestart #servicehive-server2start
4、测试
$hive-e'createtablet(idint);' $hive-e'select*fromtlimit2;' $hive-e'selectidfromt;'
访问beeline:
$beeline beeline>!connectjdbc:hive2://localhost:10000;
5、与hbase集成
先安装hive-hbase:
#yuminstallhive-hbase-y
如果你是使用的cdh4,则需要在hiveshell里执行以下命令添加jar:
$ADDJAR/usr/lib/hive/lib/zookeeper.jar; $ADDJAR/usr/lib/hive/lib/hbase.jar; $ADDJAR/usr/lib/hive/lib/hive-hbase-handler-<hive_version>.jar #guava包的版本以实际版本为准。 $ADDJAR/usr/lib/hive/lib/guava-11.0.2.jar;
如果你是使用的cdh5,则需要在hiveshell里执行以下命令添加jar:
ADDJAR/usr/lib/hive/lib/zookeeper.jar; ADDJAR/usr/lib/hive/lib/hive-hbase-handler.jar; ADDJAR/usr/lib/hbase/lib/guava-12.0.1.jar; ADDJAR/usr/lib/hbase/hbase-client.jar; ADDJAR/usr/lib/hbase/hbase-common.jar; ADDJAR/usr/lib/hbase/hbase-hadoop-compat.jar; ADDJAR/usr/lib/hbase/hbase-hadoop2-compat.jar; ADDJAR/usr/lib/hbase/hbase-protocol.jar; ADDJAR/usr/lib/hbase/hbase-server.jar;
以上你也可以在hive-site.xml中通过hive.aux.jars.path参数来配置,或者你也可以在hive-env.sh中通过exportHIVE_AUX_JARS_PATH=来设置。
二、安装impala
与Hive类似,Impala也可以直接与HDFS和HBase库直接交互。只不过Hive和其它建立在MapReduce上的框架适合需要长时间运行的批处理任务。例如:那些批量提取,转化,加载(ETL)类型的Job,而Impala主要用于实时查询。
组件分配如下:
172.16.57.74bd-ops-test-74impala-state-storeimpala-catalogimpala-server 172.16.57.75bd-ops-test-75impala-server 172.16.57.76bd-ops-test-76impala-server 172.16.57.77bd-ops-test-77impala-server
1、安装
在74节点安装:
yuminstallimpala-state-storeimpala-catalogimpala-server-y
在75、76、77节点上安装:
yuminstallimpala-server-y
2、配置
2.1修改配置文件
查看安装路径:
#find/-nameimpala /var/run/impala /var/lib/alternatives/impala /var/log/impala /usr/lib/impala /etc/alternatives/impala /etc/default/impala /etc/impala /etc/default/impala
impalad的配置文件路径由环境变量IMPALA_CONF_DIR指定,默认为/usr/lib/impala/conf,impala的默认配置在/etc/default/impala,修改该文件中的IMPALA_CATALOG_SERVICE_HOST和IMPALA_STATE_STORE_HOST
IMPALA_CATALOG_SERVICE_HOST=bd-ops-test-74 IMPALA_STATE_STORE_HOST=bd-ops-test-74 IMPALA_STATE_STORE_PORT=24000 IMPALA_BACKEND_PORT=22000 IMPALA_LOG_DIR=/var/log/impala IMPALA_CATALOG_ARGS="-log_dir=${IMPALA_LOG_DIR}-sentry_config=/etc/impala/conf/sentry-site.xml" IMPALA_STATE_STORE_ARGS="-log_dir=${IMPALA_LOG_DIR}-state_store_port=${IMPALA_STATE_STORE_PORT}" IMPALA_SERVER_ARGS="\ -log_dir=${IMPALA_LOG_DIR}\ -use_local_tz_for_unix_timestamp_conversions=true\ -convert_legacy_hive_parquet_utc_timestamps=true\ -catalog_service_host=${IMPALA_CATALOG_SERVICE_HOST}\ -state_store_port=${IMPALA_STATE_STORE_PORT}\ -use_statestore\ -state_store_host=${IMPALA_STATE_STORE_HOST}\ -be_port=${IMPALA_BACKEND_PORT}\ -server_name=server1\ -sentry_config=/etc/impala/conf/sentry-site.xml" ENABLE_CORE_DUMPS=false #LIBHDFS_OPTS=-Djava.library.path=/usr/lib/impala/lib #MYSQL_CONNECTOR_JAR=/usr/share/java/mysql-connector-java.jar #IMPALA_BIN=/usr/lib/impala/sbin #IMPALA_HOME=/usr/lib/impala #HIVE_HOME=/usr/lib/hive #HBASE_HOME=/usr/lib/hbase #IMPALA_CONF_DIR=/etc/impala/conf #HADOOP_CONF_DIR=/etc/impala/conf #HIVE_CONF_DIR=/etc/impala/conf #HBASE_CONF_DIR=/etc/impala/conf
设置impala可以使用的最大内存:在上面的IMPALA_SERVER_ARGS参数值后面添加-mem_limit=70%即可。
如果需要设置impala中每一个队列的最大请求数,需要在上面的IMPALA_SERVER_ARGS参数值后面添加-default_pool_max_requests=-1,该参数设置每一个队列的最大请求数,如果为-1,则表示不做限制。
在节点74上创建hive-site.xml、core-site.xml、hdfs-site.xml的软链接至/etc/impala/conf目录并作下面修改在hdfs-site.xml文件中添加如下内容:
<property> <name>dfs.client.read.shortcircuit</name> <value>true</value> </property> <property> <name>dfs.domain.socket.path</name> <value>/var/run/hadoop-hdfs/dn._PORT</value> </property> <property> <name>dfs.datanode.hdfs-blocks-metadata.enabled</name> <value>true</value> </property>
同步以上文件到其他节点。
2.2创建socketpath
在每个节点上创建/var/run/hadoop-hdfs:
#mkdir-p/var/run/hadoop-hdfs
2.3用户要求
impala安装过程中会创建名为impala的用户和组,不要删除该用户和组。
如果想要impala和YARN和Llama合作,需要把impala用户加入hdfs组。
impala在执行DROPTABLE操作时,需要把文件移到到hdfs的回收站,所以你需要创建一个hdfs的目录/user/impala,并将其设置为impala用户可写。同样的,impala需要读取hive数据仓库下的数据,故需要把impala用户加入hive组。
impala不能以root用户运行,因为root用户不允许直接读。
创建impala用户家目录并设置权限:
sudo-uhdfshadoopfs-mkdir/user/impala sudo-uhdfshadoopfs-chownimpala/user/impala
查看impala用户所属的组:
#groupsimpala impala:impalahadoophdfshive
由上可知,impala用户是属于imapal、hadoop、hdfs、hive用户组的。
2.4启动服务
在74节点启动:
#serviceimpala-state-storestart #serviceimpala-catalogstart
2.5使用impala-shell
使用impala-shell启动ImpalaShell,连接74,并刷新元数据
#impala-shell StartingImpalaShellwithoutKerberosauthentication Connectedtobd-dev-hadoop-70:21000 Serverversion:impaladversion2.3.0-cdh5.5.1RELEASE(build73bf5bc5afbb47aa7eab06cfbf6023ba8cb74f3c) *********************************************************************************** WelcometotheImpalashell.Copyright(c)2015Cloudera,Inc.Allrightsreserved. (ImpalaShellv2.3.0-cdh5.5.1(73bf5bc)builtonWedDec210:39:33PST2015) Afterrunningaquery,typeSUMMARYtoseeasummaryofwheretimewasspent. *********************************************************************************** [bd-dev-hadoop-70:21000]>invalidatemetadata;
当在Hive中创建表之后,第一次启动impala-shell时,请先执行INVALIDATEMETADATA语句以便Impala识别出新创建的表(在Impala1.2及以上版本,你只需要在一个节点上运行INVALIDATEMETADATA,而不是在所有的Impala节点上运行)。
你也可以添加一些其他参数,查看有哪些参数:
#impala-shell-h Usage:impala_shell.py[options] Options: -h,--helpshowthishelpmessageandexit -iIMPALAD,--impalad=IMPALAD <host:port>ofimpaladtoconnectto [default:bd-dev-hadoop-70:21000] -qQUERY,--query=QUERY Executeaquerywithouttheshell[default:none] -fQUERY_FILE,--query_file=QUERY_FILE Executethequeriesinthequeryfile,delimitedby; [default:none] -k,--kerberosConnecttoakerberizedimpalad[default:False] -oOUTPUT_FILE,--output_file=OUTPUT_FILE Ifset,queryresultsarewrittentothegivenfile. Resultsfrommultiplesemicolon-terminatedqueries willbeappendedtothesamefile[default:none] -B,--delimitedOutputrowsindelimitedmode[default:False] --print_headerPrintcolumnnamesindelimitedmodewhenpretty- printed.[default:False] --output_delimiter=OUTPUT_DELIMITER Fielddelimitertouseforoutputindelimitedmode [default:\t] -sKERBEROS_SERVICE_NAME,--kerberos_service_name=KERBEROS_SERVICE_NAME Servicenameofakerberizedimpalad[default:impala] -V,--verboseVerboseoutput[default:True] -p,--show_profilesAlwaysdisplayqueryprofilesafterexecution [default:False] --quietDisableverboseoutput[default:False] -v,--versionPrintversioninformation[default:False] -c,--ignore_query_failure Continueonqueryfailure[default:False] -r,--refresh_after_connect RefreshImpalacatalogafterconnecting [default:False] -dDEFAULT_DB,--database=DEFAULT_DB Issuesausedatabasecommandonstartup [default:none] -l,--ldapUseLDAPtoauthenticatewithImpala.Impalamustbe configuredtoallowLDAPauthentication. [default:False] -uUSER,--user=USERUsertoauthenticatewith.[default:root] --sslConnecttoImpalaviaSSL-securedconnection [default:False] --ca_cert=CA_CERTFullpathtocertificatefileusedtoauthenticate Impala'sSSLcertificate.Mayeitherbeacopyof Impala'scertificate(forself-signedcerts)orthe certificateofatrustedthird-partyCA.Ifnotset, butSSLisenabled,theshellwillNOTverifyImpala's servercertificate[default:none] --config_file=CONFIG_FILE Specifytheconfigurationfiletoloadoptions.File musthavecase-sensitive'[impala]'header.Specifying thisoptionwithinaconfigfilewillhavenoeffect. Onlyspecifythisasaoptioninthecommandline. [default:/root/.impalarc] --live_summaryPrintaquerysummaryevery1swhilethequeryis running.[default:False] --live_progressPrintaqueryprogressevery1swhilethequeryis running.[default:False] --auth_creds_ok_in_clear Ifset,LDAPauthenticationmaybeusedwithan insecureconnectiontoImpala.WARNING:Authentication credentialswillthereforebesentunencrypted,and maybevulnerabletoattack.[default:none]
使用impala导出数据:
impala-shell-i'172.16.57.74:21000'-r-q"select*fromtest"-B--output_delimiter="\t"-oresult.txt
以上所述是小编给大家介绍的yum安装CDH5.5hive、impala的过程详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对毛票票网站的支持!