2014-10-29 2 views
0

S3 파일 시스템에 Tachyon을 설정하려고합니다. 나는 Tachyon에 완전히 새롭고 아직도 내가 그것을 발견 할 수있는 것을 읽고있다.파일 시스템에서 S3의 Tachyon 설정 오류

Exception in thread "main" java.lang.NoClassDefFoundError: org/jets3t/service/S3ServiceException 
    at org.apache.hadoop.fs.s3native.NativeS3FileSystem.createDefaultStore(NativeS3FileSystem.java:224) 
    at org.apache.hadoop.fs.s3native.NativeS3FileSystem.initialize(NativeS3FileSystem.java:214) 
    at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:1386) 
    at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:66) 
    at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:1404) 
    at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:254) 
    at org.apache.hadoop.fs.Path.getFileSystem(Path.java:187) 
    at tachyon.UnderFileSystemHdfs.<init>(UnderFileSystemHdfs.java:89) 
    at tachyon.UnderFileSystemHdfs.getClient(UnderFileSystemHdfs.java:56) 
    at tachyon.UnderFileSystem.get(UnderFileSystem.java:69) 
    at tachyon.UnderFileSystem.get(UnderFileSystem.java:54) 
    at tachyon.Format.formatFolder(Format.java:32) 
    at tachyon.Format.main(Format.java:59) 
Caused by: java.lang.ClassNotFoundException: org.jets3t.service.S3ServiceException 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
    ... 13 more 

내가 내 JetS3t의 jar 파일을 변경하거나해야 : 나는 타키온를 포맷하려고 할 때

!/usr/bin/env bash 

# This file contains environment variables required to run Tachyon. Copy it as tachyon-env.sh and 
# edit that to configure Tachyon for your site. At a minimum, 
# the following variables should be set: 
# 
# - JAVA_HOME, to point to your JAVA installation 
# - TACHYON_MASTER_ADDRESS, to bind the master to a different IP address or hostname 
# - TACHYON_UNDERFS_ADDRESS, to set the under filesystem address. 
# - TACHYON_WORKER_MEMORY_SIZE, to set how much memory to use (e.g. 1000mb, 2gb) per worker 
# - TACHYON_RAM_FOLDER, to set where worker stores in memory data 
# - TACHYON_UNDERFS_HDFS_IMPL, to set which HDFS implementation to use (e.g. com.mapr.fs.MapRFileSystem, 
# org.apache.hadoop.hdfs.DistributedFileSystem) 

# The following gives an example: 

if [[ `uname -a` == Darwin* ]]; then 
    # Assuming Mac OS X 
    export JAVA_HOME=${JAVA_HOME:-$(/usr/libexec/java_home)} 
    export TACHYON_RAM_FOLDER=/Volumes/ramdisk 
    export TACHYON_JAVA_OPTS="-Djava.security.krb5.realm= -Djava.security.krb5.kdc=" 
else 
    # Assuming Linux 
    if [ -z "$JAVA_HOME" ]; then 
    export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64 
    fi 
    export TACHYON_RAM_FOLDER=/mnt/ramdisk 
fi 

export JAVA="$JAVA_HOME/bin/java" 
export TACHYON_MASTER_ADDRESS=localhost 
export TACHYON_UNDERFS_ADDRESS=s3n://test 
#export TACHYON_UNDERFS_ADDRESS=hdfs://localhost:9000 
export TACHYON_WORKER_MEMORY_SIZE=0.5GB 
export TACHYON_UNDERFS_HDFS_IMPL=org.apache.hadoop.hdfs.DistributedFileSystem 

CONF_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" 

export TACHYON_JAVA_OPTS+=" 
    -Dlog4j.configuration=file:$CONF_DIR/log4j.properties 
    -Dtachyon.debug=false 
    -Dtachyon.underfs.address=$TACHYON_UNDERFS_ADDRESS 
    -Dtachyon.underfs.hdfs.impl=$TACHYON_UNDERFS_HDFS_IMPL 
    -Dtachyon.data.folder=$TACHYON_UNDERFS_ADDRESS/tmp/tachyon/data 
    -Dtachyon.workers.folder=$TACHYON_UNDERFS_ADDRESS/tmp/tachyon/workers 
    -Dtachyon.worker.memory.size=$TACHYON_WORKER_MEMORY_SIZE 
    -Dtachyon.worker.data.folder=$TACHYON_RAM_FOLDER/tachyonworker/ 
    -Dtachyon.master.worker.timeout.ms=60000 
    -Dtachyon.master.hostname=$TACHYON_MASTER_ADDRESS 
    -Dtachyon.master.journal.folder=$TACHYON_HOME/journal/ 
    -Dorg.apache.jasper.compiler.disablejsr199=true 
    -Djava.net.preferIPv4Stack=true 
    -Dfs.s3n.awsAccessKeyId=123 
    -Dfs.s3n.awsSecretAccessKey=456 
" 

# Master specific parameters. Default to TACHYON_JAVA_OPTS. 
export TACHYON_MASTER_JAVA_OPTS="$TACHYON_JAVA_OPTS" 

# Worker specific parameters that will be shared to all workers. Default to TACHYON_JAVA_OPTS. 
export TACHYON_WORKER_JAVA_OPTS="$TACHYON_JAVA_OPTS" 

그러나, 나는 다음과 같은 오류가 점점 오전 : 내 tachyon-env.sh은 아래와 같습니다 뭔가 다른 거니? 질문은 정말로 기본일지도 모르지만, 그것은 지금 정확히 나의 수준입니다. 하지만 Tachyon과 함께 몇 가지 기본 테스트를 실행했습니다.

나는 어떤 도움도 기뻐할 것입니다!

답변

1

문제는 S3에 액세스하려면 기본적으로 패키지보다 많은 종속성이 필요하다는 것입니다. * jets3 : 0.7.1 * 평민-HttpClient를 : 3.1

당신은 마찬가지로 그것을 할 수 있습니다합니다 (TACHYON_CLASSPATH을 납치 하둡 1.0.4 작업 할 타키온 0.5.0의 경우, 먼저 경로를 수출해야합니다 VAR는) : export TACHYON_CLASSPATH=~/.m2/repository/commons-httpclient/commons-httpclient/3.1/commons-httpclient-3.1.jar:~/.m2/repository/net/java/dev/jets3t/jets3t/0.7.1/jets3t-0.7.1.jar

는 그런 다음 시작 스크립트에이 변수를 사용할 필요가 사방 TACHYON_JAR-cp, 앞에 추가 TACHYON_CLASSPATH로 사용됩니다.

예 : (nohup $JAVA -cp $TACHYON_JAR -Dtachyon.home=$TACHYON_HOME -Dtachyon.logger.type="MASTER_LOGGER" -Dlog4j.configuration=file:$TACHYON_CONF_DIR/log4j.properties $TACHYON_MASTER_JAVA_OPTS tachyon.master.TachyonMaster > /dev/null 2>&1) & 당신은 당신의 S3 버킷을 포맷하고 타키온을 시작할 수 있습니다, 마지막으로 (nohup $JAVA -cp $TACHYON_CLASSPATH:$TACHYON_JAR -Dtachyon.home=$TACHYON_HOME -Dtachyon.logger.type="MASTER_LOGGER" -Dlog4j.configuration=file:$TACHYON_CONF_DIR/log4j.properties $TACHYON_MASTER_JAVA_OPTS tachyon.master.TachyonMaster > /dev/null 2>&1) &

된다 : ./bin/tachyon format ./bin/tachyon-start local

이 계획에 대한 경고 s3n : 나는 코드에 깊게 봤는데 s3 자격 증명에 관한 이상한 것들을 발견했습니다. 분명히 s3n 스키마 만 작동합니다 (왜냐하면이 맛은 conf에 주입/복사 될 것이기 때문입니다). 따라서 UNDERFS URL은 s3 이어야하며s3n 스키마를 사용해야하며 사용자는 tachyon-env.sh에도 자바 속성을 사용해야합니다. 운 좋게도 당신은 벌써 괜찮습니다. 그러나 다른 사람들은 그렇지 않을 수도 있습니다.