Я хочу добавить стороннюю флягу, методы которой используются в моей карте, сокращают работу.
Я просто хочу добавить свой сторонний 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