데이터 베이스 MySQL 튜토리얼 hadoop 配置机架感知

hadoop 配置机架感知

Jun 07, 2016 pm 04:31 PM
hadoop 지각 구성

周海汉?2013.7.24 http://abloz.com 假如设备链接层次分3层,第一层交换机d1下面连多个交换机rk1,rk2,rk3,rk4,. 每个交换机对应一个机架。 d1(rk1(hs11,hs12,),rk2(hs21,hs22,), rk3(hs31,hs32,),rk4(hs41,hs42,),) 可以用程序或脚本完成由host到设备的映射

周海汉?2013.7.24

http://abloz.com

假如设备链接层次分3层,第一层交换机d1下面连多个交换机rk1,rk2,rk3,rk4,…. 每个交换机对应一个机架。

d1(rk1(hs11,hs12,…),rk2(hs21,hs22,…), rk3(hs31,hs32,…),rk4(hs41,hs42,…),…)

可以用程序或脚本完成由host到设备的映射。比如,用python,生成一个topology.py:

然后在core-site.xml中配置

topology.script.file.name
/home/hadoop/hadoop-1.1.2/conf/topology.py
The script name that should be invoked to resolve DNS names to
NetworkTopology names. Example: the script would take host.foo.bar as an
argument, and return /rack1 as the output.

python机架脚本:

[hadoop@hs11 conf]$ cat topology.py
#!/usr/bin/env python

”’
This script used by hadoop to determine network/rack topology. It
should be specified in hadoop-site.xml via topology.script.file.name
Property.
topology.script.file.name
/home/hadoop/hadoop-1.1.2/conf/topology.py

To generate dict:
for i in range(xx):
#print “\”hs%d\”:\”/rk%d/hs%d\”,”%(i,(i-1)/10,i)

print “\”hs%d\”:\”/rk%d\”,”%(i,(i-1)/10)

Andy 2013.7.23
”’

import sys
from string import join

DEFAULT_RACK = ‘/rk0′;

RACK_MAP = {
“hs11″:”/rk1″,
“hs12″:”/rk1″,
“hs13″:”/rk1″,
“hs14″:”/rk1″,
“hs15″:”/rk1″,
“hs16″:”/rk1″,
“hs17″:”/rk1″,
“hs18″:”/rk1″,
“hs19″:”/rk1″,
“hs20″:”/rk1″,
“hs21″:”/rk2″,
“hs22″:”/rk2″,
“hs23″:”/rk2″,
“hs24″:”/rk2″,
“hs25″:”/rk2″,
“hs26″:”/rk2″,
“hs27″:”/rk2″,
“hs28″:”/rk2″,
“hs29″:”/rk2″,
“hs30″:”/rk2″,
“hs31″:”/rk3″,
“hs32″:”/rk3″,
“hs33″:”/rk3″,
“hs34″:”/rk3″,
“hs35″:”/rk3″,
“hs36″:”/rk3″,
“hs37″:”/rk3″,
“hs38″:”/rk3″,
“hs39″:”/rk3″,
“hs40″:”/rk3″,
“hs41″:”/rk4″,
“hs42″:”/rk4″,
“hs43″:”/rk4″,
“hs44″:”/rk4″,
“hs45″:”/rk4″,
“hs46″:”/rk4″,

“10.10.20.11″:”/rk1″,
“10.10.20.12″:”/rk1″,
“10.10.20.13″:”/rk1″,
“10.10.20.14″:”/rk1″,
“10.10.20.15″:”/rk1″,
“10.10.20.16″:”/rk1″,
“10.10.20.17″:”/rk1″,
“10.10.20.18″:”/rk1″,
“10.10.20.19″:”/rk1″,
“10.10.20.20″:”/rk1″,
“10.10.20.21″:”/rk2″,
“10.10.20.22″:”/rk2″,
“10.10.20.23″:”/rk2″,
“10.10.20.24″:”/rk2″,
“10.10.20.25″:”/rk2″,
“10.10.20.26″:”/rk2″,
“10.10.20.27″:”/rk2″,
“10.10.20.28″:”/rk2″,
“10.10.20.29″:”/rk2″,
“10.10.20.30″:”/rk2″,
“10.10.20.31″:”/rk3″,
“10.10.20.32″:”/rk3″,
“10.10.20.33″:”/rk3″,
“10.10.20.34″:”/rk3″,
“10.10.20.35″:”/rk3″,
“10.10.20.36″:”/rk3″,
“10.10.20.37″:”/rk3″,
“10.10.20.38″:”/rk3″,
“10.10.20.39″:”/rk3″,
“10.10.20.40″:”/rk3″,
“10.10.20.41″:”/rk4″,
“10.10.20.42″:”/rk4″,
“10.10.20.43″:”/rk4″,
“10.10.20.44″:”/rk4″,
“10.10.20.45″:”/rk4″,
“10.10.20.46″:”/rk4″,


}

if len(sys.argv)==1:
print DEFAULT_RACK
else:
print join([RACK_MAP.get(i, DEFAULT_RACK) for i in sys.argv[1:]],” “)

原来这个程序我返回的是

“hs11″:”/rk1/hs11″,

结果执行mapreduce程序时报如下错误:

Total MapReduce jobs = 1
Launching Job 1 out of 1
Number of reduce tasks is set to 0 since there’s no reduce operator
Starting Job = job_201307241502_0003, Tracking URL = http://hs11:50030/jobdetails.jsp?jobid=job_201307241502_0003
Kill Command = /home/hadoop/hadoop-1.1.2/libexec/../bin/hadoop job? -kill job_201307241502_0003
Hadoop job information for Stage-1: number of mappers: 0; number of reducers: 0
2013-07-24 18:38:11,854 Stage-1 map = 100%,? reduce = 100%
Ended Job = job_201307241502_0003 with errors
Error during job, obtaining debugging information…
Job Tracking URL: http://hs11:50030/jobdetails.jsp?jobid=job_201307241502_0003
FAILED: Execution Error, return code 2 from org.apache.hadoop.hive.ql.exec.MapRedTask
MapReduce Jobs Launched:
Job 0:? HDFS Read: 0 HDFS Write: 0 FAIL
Total MapReduce CPU Time Spent: 0 msec

通过http://hs11:50030/jobdetails.jsp?jobid=job_201307241502_0002?可以看到:

Job initialization failed:

java.lang.NullPointerException

at?org.apache.hadoop.mapred.JobTracker.resolveAndAddToTopology(JobTracker.java:2751)
at?org.apache.hadoop.mapred.JobInProgress.createCache(JobInProgress.java:578)
at?org.apache.hadoop.mapred.JobInProgress.initTasks(JobInProgress.java:750)

at org.apache.hadoop.mapred.JobTracker.initJob(JobTracker.java:3775)

at?org.apache.hadoop.mapred.EagerTaskInitializationListener$InitJob.run(EagerTaskInitializationListener.java:90)
at?java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at?java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)

原来系统在配置机架敏感时,并不需要在脚本中返回设备ns或hostname,系统会自动添加。改为上面的topology.py后,系统执行正确。

相关博文:

  1. hadoop 打印配置变量
  2. hadoop 中的 ClassNotFoundException
  3. hadoop ubuntu集群安装
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover

AI Clothes Remover

사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

Video Face Swap

Video Face Swap

완전히 무료인 AI 얼굴 교환 도구를 사용하여 모든 비디오의 얼굴을 쉽게 바꾸세요!

인기 기사

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

PyCharm에서 Git 구성을 설정하는 방법 PyCharm에서 Git 구성을 설정하는 방법 Feb 20, 2024 am 09:47 AM

제목: PyCharm에서 Git을 올바르게 구성하는 방법 현대 소프트웨어 개발에서 버전 제어 시스템은 매우 중요한 도구이며, 널리 사용되는 버전 제어 시스템 중 하나인 Git은 개발자에게 강력한 기능과 유연한 작업을 제공합니다. 강력한 Python 통합 개발 환경인 PyCharm은 Git을 지원하므로 개발자는 코드 버전을 보다 편리하게 관리할 수 있습니다. 이 기사에서는 개발 프로세스 중에 더 나은 개발을 촉진하기 위해 PyCharm에서 Git을 올바르게 구성하는 방법을 소개합니다.

Linux 시스템에서 GDM의 작동 원리 및 구성 방법 Linux 시스템에서 GDM의 작동 원리 및 구성 방법 Mar 01, 2024 pm 06:36 PM

제목: Linux 시스템에서 GDM의 작동 원리 및 구성 방법 Linux 운영 체제에서 GDM(GNOMEDisplayManager)은 그래픽 사용자 인터페이스(GUI) 로그인 및 사용자 세션 관리를 제어하는 ​​데 사용되는 일반적인 디스플레이 관리자입니다. 이 기사에서는 GDM의 작동 원리와 구성 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1. GDM의 작동 원리 GDM은 GNOME 데스크탑 환경의 디스플레이 관리자이며 X 서버를 시작하고 사용자에게 로그인 인터페이스를 제공합니다.

PyCharm과 PyTorch의 완벽한 조합: 자세한 설치 및 구성 단계 PyCharm과 PyTorch의 완벽한 조합: 자세한 설치 및 구성 단계 Feb 21, 2024 pm 12:00 PM

PyCharm은 강력한 통합 개발 환경(IDE)이고, PyTorch는 딥 러닝 분야에서 인기 있는 오픈 소스 프레임워크입니다. 머신러닝과 딥러닝 분야에서 PyCharm과 PyTorch를 개발에 활용하면 개발 효율성과 코드 품질을 크게 향상시킬 수 있습니다. 이 기사에서는 PyCharm에서 PyTorch를 설치 및 구성하는 방법을 자세히 소개하고 독자가 이 두 가지의 강력한 기능을 더 잘 활용할 수 있도록 특정 코드 예제를 첨부합니다. 1단계: PyCharm 및 Python 설치

Linux Bashrc 이해: 기능, 구성 및 사용법 Linux Bashrc 이해: 기능, 구성 및 사용법 Mar 20, 2024 pm 03:30 PM

Linux Bashrc 이해: 기능, 구성 및 사용법 Linux 시스템에서 Bashrc(BourneAgainShellruncommands)는 시스템 시작 시 자동으로 실행되는 다양한 명령과 설정이 포함된 매우 중요한 구성 파일입니다. Bashrc 파일은 일반적으로 사용자의 홈 디렉토리에 있으며 숨겨진 파일입니다. 해당 기능은 사용자를 위해 Bashshell 환경을 사용자 정의하는 것입니다. 1. Bashrc 기능 설정 환경

win11 시스템에서 작업 그룹을 구성하는 방법 win11 시스템에서 작업 그룹을 구성하는 방법 Feb 22, 2024 pm 09:50 PM

Win11에서 작업 그룹을 구성하는 방법 작업 그룹은 로컬 영역 네트워크에서 여러 컴퓨터를 연결하는 방법으로, 파일, 프린터 및 기타 리소스를 컴퓨터 간에 공유할 수 있습니다. Win11 시스템에서는 작업 그룹을 구성하는 것이 매우 간단합니다. 아래 단계를 따르십시오. 1단계: "설정" 애플리케이션을 엽니다. 먼저 Win11 시스템의 "시작" 버튼을 클릭한 다음 팝업 메뉴에서 "설정" 애플리케이션을 선택합니다. "Win+I" 단축키를 사용하여 "설정"을 열 수도 있습니다. 2단계: "시스템"을 선택하세요. 설정 앱에 여러 옵션이 표시됩니다. 시스템 설정 페이지로 들어가려면 "시스템" 옵션을 클릭하세요. 3단계: "정보"를 선택합니다. "시스템" 설정 페이지에 여러 하위 옵션이 표시됩니다. 클릭하세요

간단하고 이해하기 쉬운 PyCharm 구성 Git 튜토리얼 간단하고 이해하기 쉬운 PyCharm 구성 Git 튜토리얼 Feb 20, 2024 am 08:28 AM

PyCharm은 일반적으로 사용되는 통합 개발 환경(IDE)입니다. 일상적인 개발에서는 Git을 사용하여 코드를 관리하는 것이 필수적입니다. 이 기사에서는 특정 코드 예제와 함께 PyCharm에서 Git을 구성하고 코드 관리를 위해 Git을 사용하는 방법을 소개합니다. 1단계: Git 설치 먼저 컴퓨터에 Git이 설치되어 있는지 확인하세요. 설치되어 있지 않은 경우 [Git 공식 홈페이지](https://git-scm.com/)에서 최신 버전의 Git을 다운로드하여 설치할 수 있습니다.

Linux 시스템에서 FTPS를 구성하고 설치하는 방법 Linux 시스템에서 FTPS를 구성하고 설치하는 방법 Mar 20, 2024 pm 02:03 PM

제목: Linux 시스템에서 FTPS를 구성하고 설치하는 방법에는 특정 코드 예제가 필요합니다. Linux 시스템에서 FTPS는 FTP와 비교하여 전송된 데이터를 TLS/SSL 프로토콜을 통해 암호화하므로 성능이 향상됩니다. 데이터 전송의 보안. 이 기사에서는 Linux 시스템에서 FTPS를 구성 및 설치하는 방법을 소개하고 구체적인 코드 예제를 제공합니다. 1단계: vsftpd 설치 터미널을 열고 다음 명령을 입력하여 vsftpd를 설치합니다. sudo

CentOS7 시스템에 DRBD를 설치하고 구성하는 방법은 무엇입니까? 고가용성 및 데이터 중복성 구현에 대한 튜토리얼입니다! CentOS7 시스템에 DRBD를 설치하고 구성하는 방법은 무엇입니까? 고가용성 및 데이터 중복성 구현에 대한 튜토리얼입니다! Feb 22, 2024 pm 02:13 PM

DRBD(DistributedReplicatedBlockDevice)는 데이터 중복성과 고가용성을 달성하기 위한 오픈 소스 솔루션입니다. 다음은 CentOS7 시스템에 DRBD를 설치하고 구성하는 튜토리얼입니다. DRBD 설치: 터미널을 열고 CentOS7 시스템에 관리자로 로그인합니다. 다음 명령을 실행하여 DRBD 패키지를 설치하십시오. sudoyuminstalldrbd DRBD 구성: DRBD 구성 파일(일반적으로 /etc/drbd.d 디렉토리에 있음)을 편집하여 DRBD 자원에 대한 설정을 구성하십시오. 예를 들어 기본 노드와 백업 노드의 IP 주소, 포트 및 장치를 정의할 수 있습니다. 기본 노드와 백업 노드 사이에 네트워크 연결이 있는지 확인하십시오.

See all articles