cm-5.13下配置hbase客户端,hive客户端,hadoop客户端,spark客户端

一:hadoop客户端配置

1.软件要求:

hadoop2.60-cdh5.13(感觉要求不是很严格,版本兼容性很好,后来证明我错了,hive-1.1.0-cdh5.13,要求必须是hadoop-cdh5.13的,具体的hadoop2.X或者其他不知道,但是cdh必须是5.13,不然会出现hive能创建表和插入数据,但是却无法查看的问题。)

jdk1.8

2.配置流程:

cm-server web页面上下载hdfs和yarn的客户端配置:(后来同事发现,可以在机器的/etc/hadoop/conf.cloudera.yarn目录下找到所有的cm集群上的客户端配置,故一会可以从本地拷贝客户端配置文件,还有就是下载的haoop-conf和yarn-conf其实yarn-conf已经包含了hadoop-conf,但是文件好像还略有不同,不过我都是先复制hadoop-conf,后复制yarn-conf,所以只需要yarn-conf的配置文件就满足需求了,故本地只需要拷贝/etc/hadoop/conf.cloudera.yarn目录下的文件即可)

hadoop-conf:


yarn-conf:


然后放到机器上的hadoop/etc/hadoop/下,配置环境变量后看hadoop fs -ls / 查看能否正常使用。

注:后来发现一个问题,不能把cm上下载的 hadoop-env.sh放到,客户端hadoop/etc/hadoop/下,否则在运行hadoop测试jar包wordcount时会出现如下问题(找不到hadoop_class路径):

hadoop jar /opt/beh/core/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0-cdh5.13.1.jar wordcount /input /output/output1

测试文件自己上传到/input下,然后/output/output1这个路径必须不存在,hadoop自己创建,查看结果查看用hdfs dfs -cat /output/output1/*

报错如下:

java.lang.NoClassDefFoundError: org/apache/hadoop/mapreduce/lib/partition/InputSampler$Sampler
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Class.java:2701)
        at java.lang.Class.privateGetMethodRecursive(Class.java:3048)
        at java.lang.Class.getMethod0(Class.java:3018)
        at java.lang.Class.getMethod(Class.java:1784)
        at org.apache.hadoop.util.ProgramDriver$ProgramDescription.<init>(ProgramDriver.java:59)
        at org.apache.hadoop.util.ProgramDriver.addClass(ProgramDriver.java:103)
        at org.apache.hadoop.examples.ExampleDriver.main(ExampleDriver.java:57)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.hadoop.util.RunJar.run(RunJar.java:221)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:136)
Caused by: java.lang.ClassNotFoundException: org.apache.hadoop.mapreduce.lib.partition.InputSampler$Sampler
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)

有两个解决办法:

1).在/opt/beh/conf/beh_env,配置export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/opt/beh/core/hadoop/share/hadoop/mapreduce/*

然后source。(或者直接在linux命令行 运行 export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/opt/beh/core/hadoop/share/hadoop/mapreduce/*,临时生效

2).从根源上解决问题,把hadoop/etc/hadoop/hadoop-env.sh换成官方的原配置文件,不用cm上下载的hadoop-env.sh

注:后来测试cm web页面配置跟本地配置是否一致,然后就开始找/etc/hadoop/conf/*,结果并没有cm上的配置,最后在/opt/cm-5.13.1/cloudera-scm-agent/process/129-hdfs-DATANODE/hdfs-site.xml里面发现了跟cm页面一样的配置。需要注意的是,如果你在cm页面修改了相关的hdfs-site.xml,也就是datanode的一些配置的时候,重启服务后,你再次进入这个本地目录,你会发现里面的东西没有修改,那是因为服务重启,pross进程号换了,这个配置文件在另一个进程下,eg:/opt/cm-5.13.1/cloudera-scm-agent/process/489-hdfs-DATANODE/,这个很重要。


3.如果hadoop用户需要拥有hdfs上其他用户目录(eg: /hbase  hbase:hbase ......)的写入权限,那么需要配置cm集群的yarn(去web页面上配置,直接在客户端配置yarn-site.xml不好使):

修改yarn.acl.enable,把false改为true,然后重启集群,重新下载客户端配置,重新配置客户端。

现在假如需要hbase用户在hdfs目录上的权限,那么需要在hdfs用户下执行:

hadoop fs -setfacl -R -m user:hadoop:rwx /hbase

这样hadoop用户就可以操作hdfs上的 /hbase目录了。

4.如果hadoop用户想要在显示为  hdfs:supergroup 权限的路径上有写的权限,那么可以在hdfs用户下执行:

hadoop fs -chmod (-R) a+w 路径


二:hbase客户端配置

1.环境要求

hadoop2.6.0客户端

jdk-1.8

2.软件

在 http://archive-primary.cloudera.com/cdh5/cdh/5/  上下载hbase-1.2.0-cdh5.13.0.tar.gz。

3.在cm-server web页面上下在hbase客户端配置,内容如下:


4.查看hbase-env.sh的内容:


5.解压hbase-1.2.0-cdh5.13.0.tar.gz

6.把hbase客户端配置文件的所有配置复制到hbase-1.2.0-cdh5.13.0/conf下,除了hbase-env.sh

7.修改hbase-1.2.0-cdh5.13.0/conf/hbase-env.sh:

把hbase客户端配置文件hbase-env.sh的那两句话,复制到hbase-1.2.0-cdh5.13.0/conf/hbase-env.sh里面,然后在hbase-1.2.0-cdh5.13.0/conf/hbase-env.sh另外添加export JAVA_HOME=***,同时配置export HBASE_MANAGES_ZK=false,表示禁用hbase自带的zk。

8.配置环境变量或者直接在hbase-1.2.0-cdh5.13.0/bin/下启动hbase shell,观察能否正常启动。


三:hive客户端配置

1.软件要求:

hadoop客户端

jdk1.8

2.在 http://archive-primary.cloudera.com/cdh5/cdh/5/  上下载hive-1.1.0-cdh5.13.0.tar.gz,解压。

3.在cm上下载hive客户端配置:

hive-conf内容:


3.把hive客户端配置文件所有文件都放到hive-1.1.0-cdh5.13.0下,全部,包括hive-env.sh。

4.修改hive-1.1.0-cdh5.13.0/conf/hive-env.sh:(仅修改HADOOP_CONF_DIR)

修改前:


修改后:


5.配置环境变量,启动hive,验证结果。


四:spark客户端配置

1.软件要求:

hadoop客户端

hive客户端

jdk1.8

scala-2.11.8(可选,有人告诉我spark自带scala)

2.软件ApacheSpark2.2.1

3.解压后,把hadoop客户端配置的core-site.xml,hdfs-site.xml,yarn-site.xml,和hive客户端配置的hive-site.xml,放到spark/conf目录下

4.然后配置spark-env.sh:

export HADOOP_CONF_DIR=/opt/beh/core/hadoop/etc/hadoop

 export YARN_CONF_DIR=/opt/beh/core/hadoop/etc/hadoop 

export JAVA_HOME=/opt/beh/core/jdk1.8.0_151 

export SCALA_HOME=/opt/beh/core/scala2.11.8 

export JRE_HOME=$JAVA_HOME/jre 

export HADOOP_HOME=/opt/beh/core/hadoop 

export SPARK_HOME=/opt/beh/core/spark-2.2.0 

export SPARK_LIBARY_PATH=.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib:$HADOOP_HOME/lib/native 

export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$SCALA_HOME/bin:$SPARK_HOME/bin:$PATH

export SPARK_LOG_DIR=/opt/beh/core/sparklog

5.配置环境变量后运行spark pi测试样例:(--queue 对列名:可以指定队列提交到yanr上)

 spark-submit --class org.apache.spark.examples.SparkPi --master yarn /opt/beh/core/spark/examples/jars/spark-examples_2.11-2.2.1.jar  


6.报错:找不到/etc/hadoop/conf.cloudera.yarn,在cm集群上的一台resourcemanager节点上,cp这个目录,然后按照rm节点的权限对客户端的/etc/hadoop,和/etc/hadoop/conf.cloudera.yarn进行权限的设置,要保证跟rm节点的权限一样。

7.再次运行pi样例检测结果

8.配置spark-sql

cp hive客户端/conf/hive-site.xml到spark-2.2.1/conf/目录下,然后运行spark-sql,进去后,执行show databases,看执行结果是否和hive执行结果一样。

9.检查spark提交到yarn上的日志,可以用这条命令:

yarn logs -applicationId <appID>



猜你喜欢

转载自blog.csdn.net/qq_35440040/article/details/79298408