我hadoop从github 下载了源代码,并使用以下native选项进行编译:
mvn package -Pdist,native -DskipTests -Dtar -Dmaven.javadoc.skip=true
Run Code Online (Sandbox Code Playgroud)
然后我将.dylib文件复制 到$ HADOOP_HOME/lib
cp -p hadoop-common-project/hadoop-common/target/hadoop-common-2.7.1/lib/native/*.dylib /usr/local/Cellar/hadoop/2.7.2/libexec/share/hadoop/lib
Run Code Online (Sandbox Code Playgroud)
LD_LIBRARY_PATH已更新并且hdfs已重新启动:
echo $LD_LIBRARY_PATH
/usr/local/Cellar/hadoop/2.7.2/libexec/lib:
/usr/local/Cellar/hadoop/2.7.2/libexec/share/hadoop/common/lib:/Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home//jre/lib
Run Code Online (Sandbox Code Playgroud)
(注意:这也意味着Hadoop的答案"无法为你的平台加载native-hadoop库"错误在docker-spark上?对我来说不起作用..)
但checknative仍然统一返回false:
$stop-dfs.sh && start-dfs.sh && hadoop checknative
16/06/13 16:12:32 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Stopping namenodes on [sparkbook]
sparkbook: stopping namenode
localhost: stopping datanode
Stopping secondary namenodes [0.0.0.0]
0.0.0.0: stopping secondarynamenode
16/06/13 16:12:50 WARN util.NativeCodeLoader: …Run Code Online (Sandbox Code Playgroud) 我正在尝试将OpenCV与Hadoop一起使用.以下是我的代码.我只是测试OpenCV库是否与Hadoop一起工作,即当我在public int run(String[] args)Hadoop 函数中运行OpenCV代码时
.
我在互联网上搜索,并找到了一些如何libopencv_java310.so在Hadoop中添加OpenCV本机库()的方法.我尝试了一些方法,但它没有用.例如本教程.
它说添加JAVA.LIBRARY.PATH到hadoop-config.sh文件.但它没有用.我收到了这个错误
Exception in thread "main" java.lang.UnsatisfiedLinkError: no opencv_java310 in java.library.path
at line
System.loadLibrary(Core.NATIVE.LIBRARY.NAME);
Run Code Online (Sandbox Code Playgroud)
最后,我将OpenCV本机库(libopencv_java310.so)添加到此路径(从Internet获得解决方案)
$HADOOP_HOME/lib/native
Run Code Online (Sandbox Code Playgroud)
它似乎有效.我没有得到上述错误.但是我在下一行得到了这个错误:
Exception in thread "main" java.lang.UnsatisfiedLinkError: org.opencv.objdetect.CascadeClassifier.CascadeClassifier_1(Ljava/lang/String;)
Run Code Online (Sandbox Code Playgroud)
此错误符合以下条件:
CascadeClassifier cad = new CascadeClassifier();
Run Code Online (Sandbox Code Playgroud)
据我所知,如果未加载OpenCV本机库,则会出现此错误.但是现在加载了库,我不知道这个错误的原因是什么.
public int run(String[] args) throws Exception {
Configuration conf = new Configuration();
Job job = Job.getInstance(conf);
job.setJarByClass(readVideoFile.class);
job.setJobName("smallfilestoseqfile");
job.setInputFormatClass(readVideoInputFormat.class);
job.setNumReduceTasks(1);
FileInputFormat.setInputPaths(job, new Path(args[0]));
FileOutputFormat.setOutputPath(job, new Path(args[1]));
job.setOutputKeyClass(Text.class);
job.setOutputValueClass(Text.class);
job.setMapperClass(readVideoMapper.class);
System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
CascadeClassifier cad …Run Code Online (Sandbox Code Playgroud) 我是 Spark 新手,在使用 Snappy 压缩保存文本文件时遇到了问题。我不断收到下面的错误消息。我遵循了互联网上的许多指示,但没有一个对我有用。最终,我找到了一个解决方法,但我希望有人就正确的解决方案提供建议。
java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCodeLoader.buildSupportsSnappy()Z
Run Code Online (Sandbox Code Playgroud)
我只使用 Spark-shell 来测试我的代码,并使用以下命令启动它:
spark-shell --master yarn \
--num-executors 1 \
--executor-memory 512M
Run Code Online (Sandbox Code Playgroud)
在.bashrc中添加以下环境变量
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export HADOOP_HOME=/opt/hadoop
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
export SPARK_HOME=/opt/spark
export PATH=$PATH:$SPARK_HOME/bin
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
Run Code Online (Sandbox Code Playgroud)
在spark-env.sh中添加以下环境变量
export JAVA_LIBRARY_PATH=$JAVA_LIBRARY_PATH:/opt/hadoop/lib/native
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/opt/hadoop/lib/native
export SPARK_YARN_USER_ENV="JAVA_LIBRARY_PATH=$JAVA_LIBRARY_PATH,LD_LIBRARY_PATH=$LD_LIBRARY_PATH"
Run Code Online (Sandbox Code Playgroud)
检查 Snappy 库是否存在
hadoop checknative
...
Native library checking:
hadoop: true /opt/hadoop/lib/native/libhadoop.so.1.0.0
zlib: true /lib/x86_64-linux-gnu/libz.so.1
zstd : true /lib/x86_64-linux-gnu/libzstd.so.1
snappy: true /lib/x86_64-linux-gnu/libsnappy.so.1
lz4: true revision:10301
bzip2: true …Run Code Online (Sandbox Code Playgroud)