Skip to content

Latest commit

 

History

History
191 lines (139 loc) · 6.88 KB

Problems.md

File metadata and controls

191 lines (139 loc) · 6.88 KB

Problems

HDFS

问题:
	Connection failed: [Errno 111] Connection refused to apollo03.dev.zjz:2049
解决:
	HDFS NFS Gateway工作需要依附 rpcbind 服务,所以启动前需要确定rpcbind服务正常开启。 
	service rpcbind status
	service rpcbind start
	
	sudo systemctl status rpcbind
	sudo vim /etc/systemd/system/sockets.target.wants/rpcbind.socket
	systemctl status rpcbind.socket
	
	● rpcbind.socket - RPCbind Server Activation Socket
   Loaded: loaded (/usr/lib/systemd/system/rpcbind.socket; enabled; vendor preset: enabled)
   Active: failed (Result: resources)
   Listen: /var/run/rpcbind.sock (Stream)
           0.0.0.0:111 (Stream)
           0.0.0.0:111 (Datagram)
           [::]:111 (Stream)
           [::]:111 (Datagram)
	Warning: rpcbind.socket changed on disk. Run 'systemctl daemon-reload' to reload units.

	sudo systemctl daemon-reload
	sudo systemctl start rpcbind.socket
	解决!

问题:
	hadoop集群安全模式,导致hbase无法读取,yarn无法运行
	
	在安全模式下输入指令:
  hadoop dfsadmin -safemode leave
  hdfs dfsadmin -safemode leave
  sudo -u hdfs hdfs dfsadmin -safemode leave
  即可退出安全模式

  格式:Usage: java DFSAdmin [-safemode enter | leave | get |wait]
  用户可以通过dfsadmin -safemode value 来操作安全模式,参数value的说明如下:
  enter - 进入安全模式
  leave - 强制NameNode离开安全模式
  get   - 返回安全模式是否开启的信息
  wait  - 等待,一直到安全模式结束
  
问题:权限
	change dfs.permissions.enabled to false

Hive

修改Hive Interactive  的 HiveServer2 Port 和 thrift.http.port 的地址
以匹配 HiveServer2服务

修改hive.server2.thrift.http.port=10002

待定

HBase:

// 检查HBase集群状态: 
hbase hbck
// https://blog.csdn.net/xiao_jun_0820/article/details/28602213
// https://www.cnblogs.com/quchunhui/p/9583746.html

TimeLine:

问题:
	内嵌HBase问题
// 参考,不用这个 https://www.cnblogs.com/langfanyun/p/10821415.html
// 官方:
https://docs.hortonworks.com/HDPDocuments/HDP3/HDP-3.1.0/data-operating-system/content/configure_hbase_for_timeline_service_2.0.html

// {hdp-dir} = /usr/hdp/3.1.0.0-78
export HBASE_CLASSPATH_PREFIX=/usr/hdp/3.1.0.0-78/hadoop-yarn/timelineservice/*; /usr/hdp/3.1.0.0-78/hbase/bin/hbase org.apache.hadoop.yarn.server.timelineservice.storage.TimelineSchemaCreator -Dhbase.client.retries.number=35 -create -s

// 日志 
INFO  [main] storage.TimelineSchemaCreator: Successfully created HBase schema. 
INFO  [main] storage.TimelineSchemaCreator: Schema creation finished successfully

// HBase授权
grant 'yarn', 'RWXCA'

错误:ERROR: DISABLED: Security features are not available
search keywords:HDP HBase acl
参考:https://docs.hortonworks.com/HDPDocuments/HDP3/HDP-3.1.0/security-reference/content/kerberos_nonambari_configure_hbase_for_access_control_lists_acl_.html
解决:因为目前集群未开启安全kerberos,所以此参考暂时无法处理,先看看不开启acl是不是任意用户都可访问
直接 scan timelineservice相关的表,发现里面已经有数据了,说明yarn可以正常读取

Ambari:

问题:
	Cannot create /var/run/ambari-server/stack-recommendations
原因:文件权限
解决:
	sudo chown -R ambari /var/run/ambari-server

参考:
	https://blog.csdn.net/qq_19968255/article/details/72881989

HDP 3.1.0 HIVE使用tez 长时间无反应 成功解决

问题:
	HDP 3.1.0 安装的HIVE使用tez,执行任务需要用到tez session时会找不到
解决:
1. 在打开后增加以下设置
		set hive.server2.tez.initialize.default.sessions=true;
2. 如需一直生效,在hive的配置文件hive-site.xml中添加
	<property>
     <name>hive.server2.tez.initialize.default.sessions</name>
     <value>true</value>
	</property>
3. 在ambari的管理界面点开hive advance 设置
		Start Tez session at Initialization 为 true

Spark (2.x问题汇总:https://blog.csdn.net/xwc35047/article/details/53933265)

问题:
	HDP 上安装了 Hive3.1 和 Spark2, 提交 Spark 作业时,报找不到 Hive 中表的问题
解决:
网上的另外几种方法:
1. 把 hive-site.xml 复制到 Spark 的 conf 目录下。
    我看了一下 spark 的 conf 目录,有 hive-site.xml 这个表的,而且从日志中也可以看到 spark 能找到 hive 的 thrift://datacenter2:9083 这个地址,说明没问题。

2. 创建 spark session 的时候要启用 hive。
val ss = SparkSession.builder().appName("统计").enableHiveSupport().getOrCreate()
我的程序里有启用的,所以也不是原因。

3. 关闭 Hive 3 中的默认的 ACID 功能,修改如下几个参数
hive.strict.managed.tables=false 
hive.create.as.insert.only=false 
metastore.create.as.acid=false
   试过之后,问题依旧。
   崩溃了,找不到其它解决方法了。先记录一下。
 ================================================
      有别的事,先做别的了。过了2天,抱着试试看的态度,在 /etc/spark2/3.1.0.0-78/0 下建了个软链接到  /etc/hive/conf 下的 hive-site.xml ,竟然找得到表了。通过比较,发现原 spark 下的 hive-site.xml 里多了一个 metastore.catalog.default 的配置,值是 spark。在网上搜了一下,才知道要改成 hive 才可以读 hive 下创建的表。这个值我理解的是表示hive仓库的命名空间。为什么 Spark 没有默认设置成 hive 的 catalog 的呢? 因为 HDP 3.1 中的 hive 会默认开启 ACID,spark 读取 ACID 的 表时,会出错,所以设置了一个 spark 的 catalog。
      
      
问题:spark-shell
scala> spark.sql("select * from orders")  
res7: org.apache.spark.sql.DataFrame = [order_id: string, user_id: string ... 5 more fields]
scala> res7.show() 
错误:java.io.IOException: Not a file: hdfs://hdftofuat/warehouse/tablespace/managed/hive/zjj.db/orders/delta_0000001_0000001_0000
解决:
Unlike Hive, spark can not traverse through sub folders in HDFS.(与Hive不同,spark不能遍历HDFS中的子文件夹)
网上很多让设置这个的解决方案:尝试成功
scala> sc.hadoopConfiguration.setBoolean("mapreduce.input.fileinputformat.input.dir.recursive", true)
深入分析:
存在子文件是因为,ACID的事务
INSERT 语句会在一个事务中运行。它会创建名为 delta 的目录,存放事务的信息和表的数据。

metastore.catalog.default:hive
这个选项默认为Spark, 即读取SparkSQL自己的metastore_db,修改完后,Spark Shell会去读取Hive的metastore,这样就可以实现以Spark Shell方式访问Hive SQL方式创建的databases/tables.

统一解决:
给mapReduce2添加mapreduce.input.fileinputformat.input.dir.recursive=true的custom设置

全新Cloudera:https://www.cloudera.com/downloads.html

Doc:

https://docs.cloudera.com/HDPDocuments/HDP3/HDP-3.1.4/index.html

https://docs.cloudera.com/HDPDocuments/HDP3/HDP-3.1.4/release-notes/content/comp_versions.html