Как добавить стороннюю банку в classoop путь hadoop? - PullRequest
0 голосов
/ 04 июня 2019

Я хочу добавить стороннюю флягу, методы которой используются в моей карте, сокращают работу. Я просто хочу добавить свой сторонний jar в classpath hadoop и быть уверенным, что он будет использован.

Вещи, которые я не хочу делать: 1) Используйте распределенный кеш 2) Используйте жирные банки

То, что я сделал: 1) Добавил, что jar в каком-то месте, где установлен hadoop, дал этот путь в моем файле yarn-site.xml следующим образом: он использует этот путь, но не может найти класс в этом jar, потому что я напечатал путь к классу, в котором он показал мой jar ( но не использует его).

<property>
    <name>yarn.application.classpath</name>
    <value>/home/user/lib/myjarname.jar, $HADOOP_CLIENT_CONF_DIR,$HADOOP_COMMON_HOME/*,$HADOOP_COMMON_HOME/lib/*,$HADOOP_HDFS_HOME/*,$HADOOP_HDFS_HOME/lib/*,$HADOOP_YARN_HOME/*,$HADOOP_YARN_HOME/lib/*</value>
  </property>
org.apache.hadoop.mapred.YarnChild: Error running child : java.lang.NoClassDefFoundError: com/companyName/lib/MyClassName
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:348)
    at org.apache.hadoop.conf.Configuration.getClassByNameOrNull(Configuration.java:2442)
    at org.apache.hadoop.conf.Configuration.getClassByName(Configuration.java:2407)
    at org.apache.hadoop.conf.Configuration.getClass(Configuration.java:2503)
    at org.apache.hadoop.mapreduce.task.JobContextImpl.getMapperClass(JobContextImpl.java:187)
    at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:759)
    at org.apache.hadoop.mapred.MapTask.run(MapTask.java:347)
    at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:174)
    at java.security.AccessController.doPrivileged(Native Method)
    at javax.security.auth.Subject.doAs(Subject.java:422)
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1875)
    at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:168)
Caused by: java.lang.ClassNotFoundException: com.companyName.lib.MyClassName
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    ... 13 more
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...