spark-hadoop-hive集群搭建注意事项
完整搭建步骤参考大神链接:https://blog.csdn.net/pucao_cug/article/details/72773564一下是我自己的总结的注意事项:1.如果集群的防火墙是开着的一定要将master节点的端口8031和9000和50070端口开放出来,前两个是集群需要的后面一个是访问Hadoop页面需要的2.centos7增加端口命令firewall-cmd --zone=pub
完整搭建步骤参考大神链接:
https://blog.csdn.net/pucao_cug/article/details/72773564
以下是我自己的总结的注意事项:
1.如果集群的防火墙是开着的一定要将master节点的端口8031和9000和50070端口开放出来,前两个是集群需要的后面一个是访问Hadoop页面需要的
firewall-cmd --zone=public --add-port=50070/tcp --permanent
firewall-cmd --zone=public --add-port=9000/tcp --permanent
firewall-cmd --zone=public --add-port=8031/tcp --permanent
firewall-cmd --zone=public --add-port=8088/tcp --permanent
firewall-cmd --zone=public --add-port=8080/tcp --permanent
firewall-cmd --zone=public --add-port=8030/tcp --permanent
firewall-cmd --zone=public --add-port=8032/tcp --permanent
firewall-cmd --zone=public --add-port=8033/tcp --permanent
firewall-cmd --zone=public --add-port=7077/tcp --permanent
firewall-cmd --zone=public --add-port=50010/tcp --permanent
firewall-cmd --zone=public --add-port=50075/tcp --permanent
firewall-cmd --zone=public --add-port=50020/tcp --permanent
firewall-cmd --zone=public --add-port=8040/tcp --permanent
firewall-cmd --zone=public --add-port=8081/tcp --permanent
2.centos7增加端口命令
firewall-cmd --zone=public --add-port=50070/tcp --permanent
指定ip端和端口断
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="x.x.x.x/x" port protocol="tcp" port="1-9000" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="x.x.x.x" port protocol="tcp" port="1-60000" accept"
重启
firewall-cmd --reload
查看开启的端口
firewall-cmd --zone=public --list-ports
3.hive后台启动命令
nohup hiveserver2 1>/opt/hive/log/hiveserver.log 2>/opt/hive/log/hiveserver.err &
4.yarn-site.xml相关内存配置介绍
原文链接:
https://blog.csdn.net/mamls/article/details/68941800
修改每个nodemanager 可分配的内存 yarn.nodemanager.resource.memory-mbyarn.nodemanager.resource.memory-mb
表示该节点上YARN可使用的物理内存总量,默认是8192(MB),注意,如果你的节点内存资源不够8GB,则需要调减小这个值,而YARN不会智能的探测节点的物理内存总量。
yarn.nodemanager.vmem-pmem-ratio
任务每使用1MB物理内存,最多可使用虚拟内存量,默认是2.1。
yarn.nodemanager.pmem-check-enabled
是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true。
yarn.nodemanager.vmem-check-enabled
是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true。
yarn.scheduler.minimum-allocation-mb
单个任务可申请的最少物理内存量,默认是1024(MB),如果一个任务申请的物理内存量少于该值,则该对应的值改为这个数。
yarn.scheduler.maximum-allocation-mb
单个任务可申请的最多物理内存量,默认是8192(MB)
5.修改hive-site.xml文件来指定hive启动的默认端口号
<property>
<name>hive.server2.thrift.port</name>
<value>10010</value>
</property>
6.删除hive数据库,如果数据库里面有表,是不能通过drop直接删除的,可以使用下面的命令,强制删除。
drop database hbdata cascade
7.hive初始化元数据失败,发现初始化信息,不是自己hive-site.xml配置的,那么就去hadoop的配置文件hadoop-env.sh 按照图中的勾选的修改,增加 $HIVE_HOME/conf:
8.spark常见错误解决常见方式
https://www.cnblogs.com/liuchuanfeng/p/7206420.html
9.出现root is not allowed to impersonate anonymous,修改集群完之后重启hadoop集群
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
10.在hive中执行sql,出现java.lang.NoClassDefFoundError: scala/collection/Iterable
将 spark-assembly开头的那个jar包拷贝到hive中的lib里面
11.当hive中执行sql,出现java.lang.NoSuchMethodError: org.apache.parquet.schema.Types$MessageTypeBuilder.addFields
在spark-env.sh 中添加 export SPARK_CLASSPATH=/opt/spark/jars
这个路径是可以自定义的,然后将hive/lib中的parquet-hadoop-bundle.jar添加进去。
这里有个重点一定要记住:
不要直接将hive的lib目录直接使用,这样会在你后面的程序中报错,主要体现的及时lib包冲突,我就是碰到了这个问题,一直说我下面的的类找不到,这个类是parquet-hadoop-bundle中的,我在spark集群和java程序中都已经引用了,但是就是找不到,因为我当时是直接将hive中的lib全部用
SPARK_CLASSPATH这个引入到spark中了,所以出现了类冲突的问题,后来我将这个修改了,只引入需要的,重启集群就ok了,这个问题困扰了我太长时间。
java.lang.NoSuchMethodError: org.apache.parquet.schema.Types$PrimitiveBuilder
12.spark与hive版本对应关系
apache-hive-1.2.2-src <spark.version>1.3.1</spark.version>
apache-hive-2.1.1-src <spark.version>1.6.0</spark.version>
apache-hive-2.3.3-src <spark.version>2.0.0</spark.version>
apache-hive-2.3.4-src <spark.version>2.0.0</spark.version>
apache-hive-3.0.0-src <spark.version>2.3.0</spark.version>
更多推荐
所有评论(0)