从集群外操作Hadoop和Hive
如果在集群里面,可以直接使用hadoop的fs shell来操作集群
往上面put/get文件,或者执行一些hive查询
但如果要在hadoop集群外面去操作hadoop和hive,那么可以有2个办法:
1. 写Java程序,调用hadoop提供的一些API去完成
2. 在需要操作的服务器上搭建一个hadoop的环境
目前,我们采用的是第2种办法,这种方式比较简单
只需要将hadoop master上的hadoop相关目录打个包
部署到对应的服务器上,并修改相应的环境变量和hosts就可以了
打包时,可以把一些无用的配置信息和脚本给去掉
但需要保留core-site.xml和hdfs-site.xm和mapred-site.xml这3个配置文件
vi /etc/profile
export JAVA_HOME=/opt/java/jdk
export HADOOP_CONF_DIR=/opt/sohuhadoop/conf
export HADOOP_HOME=/opt/sohuhadoop/hadoop
export HIVE_HOME=/opt/sohuhadoop/hive
vi /etc/hosts
10.10.1.1 hadoop-master. hadoop-master
两个问题:(1)第一种方法您实现了吗?(2)第二种方法所说的打包和部署是什么意思?能详细说一下吗?谢谢
我们用的是第二个方法,第一个办法需要自己写程序去操作,可参见Hadoop手册
第二个方法很简单,就是将NameNode上的Hadoop目录打包,然后拷贝到Client上就可以了
在您说的hadoop目录拷贝到Client上以后,Client上执行job的时候,用的是什么方式?Client上也是命令行界面上输入命令?可不可以直接在程序里写好一个job,然后执行这个程序就能启动这个hadoop的job?谢谢。