b0108 大数据集群-2021分布式A(手动3节点)-运维
Spark
Q1 WARN scheduler.TaskSchedulerImpl: Initial job has not accepted any resources; check your cluster UI to ensure that workers are registered and have sufficient resources 20210805
描述
刚装完spark分布式, 配置好了。准备测试, 在客户机hc2108打开一个spark-shell
准备读取一个文件,并统计,结果报错了,如图
val textFile2 = sc.textFile("file:///opt/spark-3.1.2-bin-hadoop3.2/README.md") //读取readme.md文件,linux上文件
textFile2.count() //词条统计
导致一直卡在这,结果出不来
原因
资源不足。 分布式集群的每台机器总共只有2G内存,启动spark后还剩下1G不到。
SPARK_EXECUTOR_MEMORY 这个参数默认给1G内存,因为没有配置,就集群机器能够分配1G内存,才能跑程序。
解决
配置文件中添加参数,控制这个变量大小。还有driver内存
SPARK_EXECUTOR_MEMORY=200m
这样启动就没报错了
# driver 默认1G,executor 默认1G, 2个参数至少 500m左右
spark-shell --master spark://hc2111:7077 --driver-memory 500m --executor-memory 500m
参考
- "本地提交任务到SPARK集群报错:INITIAL JOB HAS NOT ACCEPTED ANY RESOURCES, 哪知道, 2018/04/17"
Zookeeper
Q1 中文编码问题 20210803
描述
zookeeper 配置文件 zoo.cfg,里面有个参数的注释是中文, 命令行正常显示。
但是 zookeeper 启动时 报错在日志文件中,读取参数导致解析混乱
原因
不知道是哪里编码没有匹配
解决
先去掉参数右边的中文注释
Hive
Q2 问题 SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient 20210808
描述
在hive客户机 hc2107 执行 hive ,执行show database 报错
原因:
hive 获取不到元数据,在hc2107上的配置文件hive-site.xml是空的,如果在hc2110上执行hive 命令,可以通过这个配置文件获取元数据信息
解决
利用hive的 metastore服务。
在hc2110上执行命令开启
在hc2107上的配置文件hive-stie.xml 添加服务器信息
<!-- 本机作为客户端,连接这个hive服务器,通过它中转获取hive元数据。这是远程服务器的地址 --> <property> <name>hive.metastore.uris</name> <value>thrift://hc2110:9083</value> </property>
Q1 问题: ....AuthorizationException): User: hadoop is not allowed to impersonate hadoop 20210802
描述
hc2110单节点上装完了hive, 启动hive服务器程序, 命令行下启动beeline
执行 !connect jdbc:hive2://hc2110:10000
输入用户 hadoop和密码, 报这个错误
原因
hadoop 集群增加了权限控制,不允许任意客户端连接,但是可以通过代理用户的形式,在 core-site.xml 中添加
解决
在 core-site.xml 中添加 以下参数, 形式如 hadoop.proxyuser.xxx.hosts,其中 xxx是 beeline 登录所在机器用户, 我这里是hadoop
<!-- 用户hive beeline连接 用户权限控制 --> <property> <name>hadoop.proxyuser.hadoop.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.hadoop.groups</name> <value>*</value> </property>
将集群中所有机器的配置文件改动, 重启hadoop集群就可以了。
参考
ref1 "hive启动beeline连接报错: User:...., yunyexiangfeng, 2017/03/08"
ref2 "beeline连接hiveserver2报错..., nobody, 2018/08/29"