[HADOOP] 외부 hadoop 클러스터 인 Spark에서 H / A namenodes로 구성된 URI로 hdfs에 액세스하는 방법?
HADOOP외부 hadoop 클러스터 인 Spark에서 H / A namenodes로 구성된 URI로 hdfs에 액세스하는 방법?
이제 출력을 HDFS에 저장하는 Spark 응용 프로그램이 있습니다.
우리의 hadoop 클러스터는 namenode H / A로 구성되어 있고 스파크 클러스터는 hadoop 클러스터 외부에 있습니다. (나는 그것이 나쁜 것임을 알고 있습니다.) HDFS에 액세스 할 수 있도록 어플리케이션에 HDFS URI를 지정해야합니다.
그러나 이름 서비스를 인식하지 못하기 때문에 namenode의 URI 중 하나만 제공 할 수 있으며, 실패하면 구성 파일을 수정하고 다시 시도하십시오.
Zookeeper에 액티비티를 공개하는 것은 매우 짜증나는 것처럼 보이므로 피하고 싶습니다.
어떤 대안을 제안 해 주시겠습니까?
해결법
-
==============================
1.네임 서비스가 'hadooptest'라고 가정하고, 다음과 같이 hadoop 구성을 설정하십시오. 원격 HA가 활성화 된 HDFS의 hdfs-site.xml 파일에서이 정보를 얻을 수 있습니다.
네임 서비스가 'hadooptest'라고 가정하고, 다음과 같이 hadoop 구성을 설정하십시오. 원격 HA가 활성화 된 HDFS의 hdfs-site.xml 파일에서이 정보를 얻을 수 있습니다.
sc.hadoopConfiguration.set("dfs.nameservices", "hadooptest") sc.hadoopConfiguration.set("dfs.client.failover.proxy.provider.hadooptest", "org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider") sc.hadoopConfiguration.set("dfs.ha.namenodes.hadooptest", "nn1,nn2") sc.hadoopConfiguration.set("dfs.namenode.rpc-address.hadooptest.nn1", "10.10.14.81:8020") sc.hadoopConfiguration.set("dfs.namenode.rpc-address.hadooptest.nn2", "10.10.14.82:8020")
그 후에 아래와 같이 'hadooptest'와 함께 URL을 사용할 수 있습니다.
test.write.orc("hdfs://hadooptest/tmp/test/r1")
자세한 내용은 여기를 확인하십시오.
-
==============================
2.e.
e.
echo "HADOOP_CONF_DIR=\"/opt/hadoop/etc/hadoop\"" > spark-env.sh
-
==============================
3.비슷한 유형의 문제를 발견했습니다. 필자의 경우, HA가 활성화 된 환경의 호스트 목록을 가지고 있었지만 "활성"노드 위에는 정보가 없습니다.
비슷한 유형의 문제를 발견했습니다. 필자의 경우, HA가 활성화 된 환경의 호스트 목록을 가지고 있었지만 "활성"노드 위에는 정보가 없습니다.
이 문제를 해결하기 위해 각 노드의 상태를 얻기 위해 webhdfs 호출을 사용했습니다. 이것은 내 코드에서 사용한 webhdfs 호출입니다.
curl 'http : // [hdfsHost] : 50070 / jmx? qry = Hadoop : service = NameNode, name = NameNodeStatus'
다른 HDFS 호스트로 위의 호출을합니다. json 출력에서 각 노드의 "상태"를 반환합니다.
{ "..." : [ { "name" : "Hadoop:service=NameNode,name=NameNodeStatus", "modelerType" : "org.apache.hadoop.hdfs.server.namenode.NameNode", "State" : "active", ....... } ] }
노드가 대기중인 경우 "상태"가 표시됩니다 : "대기"
JSON을 얻으면 json을 구문 분석하고 상태 값을 얻을 수 있습니다.
from https://stackoverflow.com/questions/30796957/how-to-access-hdfs-by-uri-consisting-of-h-a-namenodes-in-spark-which-is-outer-ha by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] spark jdbc에서 술어 사용하기 (0) | 2019.07.20 |
---|---|
[HADOOP] Hadoop mapReduce HDFS에 값만 저장하는 방법 (0) | 2019.07.20 |
[HADOOP] HDFS에서 테이블을 미리 그룹화하고 제로 셔플 링으로 스파크에서 읽기 (0) | 2019.07.19 |
[HADOOP] 별거없이 sqoop을 실행할 수 있습니까? (0) | 2019.07.19 |
[HADOOP] Hadoop MapReduce 작업에서 다중 이퀄라이저 체인화 (0) | 2019.07.19 |