完整搭建步骤参考大神链接:

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>

 

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐