Ik configureer momenteel Hadoop op een server die Centos wordt uitgevoerd. Wanneer ik start-dfs.sh
of stop-dfs.sh
uitvoeren, krijg ik de volgende foutmelding:
WARNE UTIL.NATIVECODELOADER: Kon Native-Hadoop-bibliotheek niet laden voor
Uw platform … met behulp van ingebouwde Java-klassen waar van toepassing
Ik loop Hadoop 2.2.0.
Een zoekopdracht doen, bracht deze link opgevoed: http: //balanceDebreath.blogspot. ca / 2013/01 / utilnativecodeloader-kan-niet-load.html
De inhoud van /native/
Directory op Hadoop 2.x lijkt anders te zijn, dus ik weet niet zeker wat ik moet doen.
Ik heb ook deze twee omgevingsvariabelen toegevoegd in hadoop-env.sh
:
Exporteer Hadoop_opts = “$ Hadoop_opts
-Djava.Library.path = / usr / local / Hadoop / lib / “Hadoop_common_lib_native_dir = “/ usr / local / Hadoop / lib / native /”
alle ideeën?
1, Autoriteit 100%
Ik neem aan dat je Hadoop op 64bit Cento’s loopt. De reden dat je zag dat waarschuwing de inheemse Hadoop-bibliotheek is $HADOOP_HOME/lib/native/libhadoop.so.1.0.0
was eigenlijk samengesteld op 32 bit.
Hoe dan ook, het is gewoon een waarschuwing en zal de functionaliteiten van Hadoop niet beïnvloeden.
Hier is de manier waarop u deze waarschuwing wilt elimineren, de broncode van Hadoop downloaden en opnieuw compileren libhadoop.so.1.0.0
op 64bit-systeem, vervang vervolgens de 32bit één.
Stappen voor het opnieuw compileren van broncode zijn hier opgenomen voor Ubuntu:
Veel succes.
Antwoord 2, autoriteit 67%
Voeg gewoon het woord nativetoe aan uw HADOOP_OPTS
als volgt:
export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$HADOOP_HOME/lib/native"
PS: bedankt Searene
Antwoord 3, autoriteit 23%
Het antwoord hangt ervan af… Ik heb zojuist Hadoop 2.6 geïnstalleerd vanuit tarball op 64-bits CentOS 6.6. De Hadoop-installatie kwam inderdaad met een vooraf gebouwde 64-bits native bibliotheek. Voor mijn installatie is het hier:
/opt/hadoop/lib/native/libhadoop.so.1.0.0
En ik weet dat het 64-bit is:
[hadoop@VMWHADTEST01 native]$ ldd libhadoop.so.1.0.0
./libhadoop.so.1.0.0: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by ./libhadoop.so.1.0.0)
linux-vdso.so.1 => (0x00007fff43510000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007f9be553a000)
libc.so.6 => /lib64/libc.so.6 (0x00007f9be51a5000)
/lib64/ld-linux-x86-64.so.2 (0x00007f9be5966000)
Helaas heb ik domweg het antwoord over het hoofd gezien terwijl ik me in het gezicht staarde terwijl ik me concentreerde op: “Is deze bibliotheek 32 pr 64 bit?”:
`GLIBC_2.14' not found (required by ./libhadoop.so.1.0.0)
Dus, les geleerd. Hoe dan ook, de rest leidde er in ieder geval toe dat ik de waarschuwing kon onderdrukken. Dus ik ging door en deed alles wat in de andere antwoorden werd aanbevolen om het bibliotheekpad te bieden met behulp van de HADOOP_OPTS-omgevingsvariabele, maar het mocht niet baten. Dus ik keek naar de broncode. De module die de fout genereert, vertelt u de hint (util.NativeCodeLoader):
15/06/18 18:59:23 WARN util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
Dus naar hier om te zien wat het doet:
Ah, er is wat logboekregistratie op het niveau van debuggen – laten we dat aanzetten om te kijken of we wat extra hulp krijgen. Dit wordt gedaan door de volgende regel toe te voegen aan het bestand $HADOOP_CONF_DIR/log4j.properties:
log4j.logger.org.apache.hadoop.util.NativeCodeLoader=DEBUG
Toen voerde ik een commando uit dat de originele waarschuwing genereert, zoals stop-dfs.sh, en kreeg deze goodie:
15/06/18 19:05:19 DEBUG util.NativeCodeLoader: Failed to load native-hadoop with error: java.lang.UnsatisfiedLinkError: /opt/hadoop/lib/native/libhadoop.so.1.0.0: /lib64/libc.so.6: version `GLIBC_2.14' not found (required by /opt/hadoop/lib/native/libhadoop.so.1.0.0)
En het antwoord wordt onthuld in dit fragment van het foutopsporingsbericht (hetzelfde dat het vorige ldd-commando ‘probeerde’ me te vertellen:
`GLIBC_2.14' not found (required by opt/hadoop/lib/native/libhadoop.so.1.0.0)
Welke versie van GLIBC heb ik? Hier is een simpele truc om erachter te komen:
[hadoop@VMWHADTEST01 hadoop]$ ldd --version
ldd (GNU libc) 2.12
Dus ik kan mijn besturingssysteem niet updaten naar 2.14. De enige oplossing is om de native bibliotheken van bronnen op mijn besturingssysteem te bouwen of de waarschuwing te onderdrukken en deze voorlopig te negeren. Ik heb ervoor gekozen om de vervelende waarschuwing voorlopig te onderdrukken (maar ben van plan om in de toekomst vanuit bronnen te bouwen) en koop met dezelfde logging-opties die we gebruikten om het foutopsporingsbericht te krijgen, behalve nu, maak het gewoon op ERROR-niveau.
log4j.logger.org.apache.hadoop.util.NativeCodeLoader=ERROR
Ik hoop dat dit anderen helpt in te zien dat een groot voordeel van open source software is dat je dit kunt uitzoeken als je een paar eenvoudige logische stappen neemt.
Antwoord 4, autoriteit 12%
Ik had hetzelfde probleem. Het is opgelost door de volgende regels toe te voegen in .bashrc
:
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
Antwoord 5, autoriteit 10%
In mijn geval, nadat ik hadoop op mijn 64-bits Linux mint OS had gebouwd, heb ik de native bibliotheek vervangen in hadoop/lib
. Toch blijft het probleem bestaan. Toen kwam ik erachter dat de hadoop naar hadoop/lib
wees en niet naar de hadoop/lib/native
. Dus ik heb zojuist alle inhoud van de native bibliotheek naar de bovenliggende bibliotheek verplaatst. En de waarschuwing is gewoon weg.
Antwoord 6, autoriteit 7%
Dit zou ook werken:
export LD_LIBRARY_PATH=/usr/lib/hadoop/lib/native
7, Autoriteit 6%
Na een continu onderzoek zoals gesuggereerd door Kotii werd het probleem opgelost.
hduser@ubuntu:~$ cd /usr/local/hadoop
hduser@ubuntu:/usr/local/hadoop$ ls
bin include libexec logs README.txt share
etc lib LICENSE.txt NOTICE.txt sbin
hduser@ubuntu:/usr/local/hadoop$ cd lib
hduser@ubuntu:/usr/local/hadoop/lib$ ls
native
hduser@ubuntu:/usr/local/hadoop/lib$ cd native/
hduser@ubuntu:/usr/local/hadoop/lib/native$ ls
libhadoop.a libhadoop.so libhadooputils.a libhdfs.so
libhadooppipes.a libhadoop.so.1.0.0 libhdfs.a libhdfs.so.0.0.0
hduser@ubuntu:/usr/local/hadoop/lib/native$ sudo mv * ../
Cheers
8, Autoriteit 6%
export JAVA_HOME=/home/hadoop/software/java/jdk1.7.0_80
export HADOOP_HOME=/usr/local/hadoop
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_COMMON_LIB_NATIVE_DIR"
9, Autoriteit 5%
Voor degenen op OSX met Hadoop die via Homebrew is geïnstalleerd, volgt u deze stappen die het pad en de Hadoop-versie worden vervangen in voorkomend geval
wget http://www.eu.apache.org/dist/hadoop/common/hadoop-2.7.1/hadoop-2.7.1-src.tar.gz
tar xvf hadoop-2.7.1-src.tar.gz
cd hadoop-2.7.1-src
mvn package -Pdist,native -DskipTests -Dtar
mv lib /usr/local/Cellar/hadoop/2.7.1/
Update Hadoop-ENV.SH met
export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -Djava.security.krb5.realm= -Djava.security.krb5.kdc= -Djava.library.path=/usr/local/Cellar/hadoop/2.7.1/lib/native"
Antwoord 10, autoriteit 4%
@zhutoulala — FWIW je links werkten voor mij met Hadoop 2.4.0 met één uitzondering, ik moest Maven vertellen de javadocs niet te bouwen. Ik heb ook de patch in de eerste link voor 2.4.0 gebruikt en het werkte prima. Dit is het maven-commando dat ik moest geven
mvn package -Dmaven.javadoc.skip=true -Pdist,native -DskipTests -Dtar
Vergeet niet om hadoop-env.sh te updaten nadat je dit hebt gebouwd en de bibliotheken hebt verplaatst 🙂
Ik dacht dat dit iemand zou kunnen helpen die tegen dezelfde wegversperringen aanliep als ik
Antwoord 11, autoriteit 2%
Verplaats uw gecompileerde native bibliotheekbestanden naar de map $HADOOP_HOME/lib
.
Stel vervolgens uw omgevingsvariabelen in door het .bashrc
-bestand
. te bewerken
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib
export HADOOP_OPTS="$HADOOP_OPTS -Djava.library.path=$HADOOP_HOME/lib"
Zorg ervoor dat uw gecompileerde native bibliotheekbestanden zich in de map $HADOOP_HOME/lib
bevinden.
het zou moeten werken.
Antwoord 12
export HADOOP_HOME=/home/hadoop/hadoop-2.4.1
export PATH=$HADOOP_HOME/bin:$PATH
export HADOOP_PREFIX=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_PREFIX
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_PREFIX/lib/native
export HADOOP_CONF_DIR=$HADOOP_PREFIX/etc/hadoop
export HADOOP_HDFS_HOME=$HADOOP_PREFIX
export HADOOP_MAPRED_HOME=$HADOOP_PREFIX
export HADOOP_YARN_HOME=$HADOOP_PREFIX
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
13
Deze regel hier:
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
van het antwoord van Kunbetter, werkte voor mij.
Voeg het gewoon toe aan .Bashrc-bestand en opnieuw laden .Bashrc-inhoud
$ source ~/.bashrc
14
Deze regel hier:
export JAVA_LIBRARY_PATH=$HADOOP_HOME/lib/native:$JAVA_LIBRARY_PATH
Vanaf het antwoord van Kunbetter is waar het geld
is
15
Ik had hetzelfde probleem met JDK6, ik heb de JDK naar JDK8 veranderd, het probleem opgelost.
Probeer JDK8 te gebruiken !!!
16
Naast @zhuToulala geaccepteerd antwoord is hier een update om het te laten werken met de nieuwste stabiele versie tot nu toe (2.8) op Armhf-platforms (Raspberry PI 3 Model B).
Eerst kan ik bevestigen dat je inheemse bibliotheken moet hercompileren tot 64-bitsarm, andere antwoorden hier op basis van het instellen van enkele omgevingsvariabelen zullen niet werken. Zoals aangegeven in Hadoop-documentatie, zijn de voorgebouwde native-bibliotheken 32 bit.
Stappen op hoog niveau in de FIST-link (http://www.ercoppa.org/posts/how-to-compile-apache-hadoop-on-ubuntu-linux.html ) zijn correct.
Op deze URL http://www.instructables.com/ ID / Native-Hadoop-260-build-on-PI / krijg je meer details specifiek voor Raspberry PI, maar niet voor Hadoop versie 2.8.
Hier zijn mijn indicaties voor Hadoop 2.8:
- er is nog steeds geen protobuf-pakket op de nieuwste Raspbian, dus u moet het zelf compileren en de versie moet exact protobuf 2.5 zijn (https://protobuf.googlecode.com/files/protobuf-2.5.0.tar.gz)
-
De methode voor het patchen van CMake-bestanden moet worden gewijzigd. Bovendien zijn de te patchen bestanden niet hetzelfde. Helaas is er geen geaccepteerde patch op JIRA die specifiek is voor 2.8. Op deze URL (https://issues.apache.org/jira/browse/HADOOP- 9320) je moet de door Andreas Muttscheller voorgestelde patch op je namenode kopiëren en plakken:
:hadoop-2.8.0-src/hadoop-common-project/hadoop-common $ touch HADOOP-9320-v2.8.patch :hadoop-2.8.0-src/hadoop-common-project/hadoop-common $ vim HADOOP-9320-v2.8.patch #copy and paste proposed patch given here : https://issues.apache.org/jira/browse/HADOOP-9320?focusedCommentId=16018862&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-16018862 :hadoop-2.8.0-src/hadoop-common-project/hadoop-common $ patch < HADOOP-9320-v2.8.patch patching file HadoopCommon.cmake patching file HadoopJNI.cmake :hadoop-2.8.0-src/hadoop-common-project/hadoop-common $ cd ../.. :hadoop-2.8.0-src $ sudo mvn package -Pdist,native -DskipTests -Dtar
Zodra het bouwen is gelukt:
:hadoop-2.8.0-src/hadoop-dist/target/hadoop-2.8.0/lib/native $ tar -cvf nativelibs.tar *
En vervang de inhoud van de lib/native directory van uw Hadoop-installatie door de inhoud van dit archief. Waarschuwingsbericht bij het uitvoeren van Hadoop zou moeten verdwijnen.
Antwoord 17
Ik gebruik CentOS niet. Dit is wat ik heb in Ubuntu 16.04.2, hadoop-2.7.3, jdk1.8.0_121. Voer start-dfs.sh of stop-dfs.sh succesvol uit zonder fout:
# JAVA env
#
export JAVA_HOME=/j01/sys/jdk
export JRE_HOME=/j01/sys/jdk/jre
export PATH=${JAVA_HOME}/bin:${JRE_HOME}/bin:${PATH}:.
# HADOOP env
#
export HADOOP_HOME=/j01/srv/hadoop
export HADOOP_MAPRED_HOME=$HADOOP_HOME
export HADOOP_COMMON_HOME=$HADOOP_HOME
export HADOOP_HDFS_HOME=$HADOOP_HOME
export YARN_HOME=$HADOOP_HOME
export HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoop
export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin
Vervang /j01/sys/jdk, /j01/srv/hadoop door uw installatiepad
Ik heb ook het volgende gedaan voor een eenmalige installatie op Ubuntu, waardoor het niet meer nodig is om meerdere keren wachtwoorden in te voeren bij het uitvoeren van start-dfs.sh:
sudo apt install openssh-server openssh-client
ssh-keygen -t rsa
ssh-copy-id user@localhost
Gebruiker vervangen door uw gebruikersnaam
Antwoord 18
Kortom, het is geen fout, het is een waarschuwing in het Hadoop-cluster.
Hier werken we alleen de omgevingsvariabelen bij.
export HADOOP_OPTS = "$HADOOP_OPTS"-Djava.library.path = /usr/local/hadoop/lib
export HADOOP_COMMON_LIB_NATIVE_DIR = "/usr/local/hadoop/lib/native"
Antwoord 19
Geverifieerde oplossing van eerdere berichten:
1) Gecontroleerd dat de libhadoop.so.1.0.0
die bij de Hadoop-distributie is geleverd, is gecompileerd voor mijn machinearchitectuur, namelijk x86_64:
[nova]:file /opt/hadoop-2.6.0/lib/native/libhadoop.so.1.0.0
/opt/hadoop-2.6.0/lib/native/libhadoop.so.1.0.0: ELF 64-bit LSB shared object, x86-64, version 1 (SYSV), dynamically linked, BuildID[sha1]=3a80422c78d708c9a1666c1a8edd23676ed77dbb, not stripped
2) -Djava.library.path=<path>
toegevoegd aan HADOOP_OPT
in hadoop-env.sh
:
export HADOOP_OPTS="$HADOOP_OPTS -Djava.net.preferIPv4Stack=true -Djava.library.path=/opt/hadoop-2.6.0/lib/native"
Hierdoor verdween de vervelende waarschuwing inderdaad.
Antwoord 20
Ten eerste: u kunt de glibc-versie wijzigen. CentOS biedt traditioneel veilige software, het betekent ook dat de versie oud is, zoals glibc,protobuf …
ldd --version
ldd /opt/hadoop/lib/native/libhadoop.so.1.0.0
Je kunt de versie van de huidige glibc vergelijken met de benodigde glibc.
Ten tweede: als de versie van de huidige glibc oud is, kunt u de glibc bijwerken.
Glibc downloaden
Als de versie van de huidige glibc-id juist is, kunt u een native woord toevoegen aan uw HADOOP_OPTS
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native
export HADOOP_OPTS="-Djava.library.path=$HADOOP_HOME/lib"
Antwoord 21
De native hadoop-bibliotheek wordt alleen ondersteund op *nix-platforms. De bibliotheek werkt niet met Cygwin of het Mac OS X-platform.
Als u Windows of Mac OS X gebruikt, moet u uw platform wijzigen in * NIX.
22
Voor het installeren van Hadoop is het zoooooo veel gemakkelijker installeren van de gratis versie van Cloudera. Het komt met een mooie GUI die het eenvoudig maakt om knooppunten toe te voegen, er is geen compileren of vullen met afhankelijkheden, het komt met dingen zoals bijenkorf, varken, enz.
http://www.cloudera.com/content/support/en/ downloads.html
De stappen zijn:
1) Downloaden
2) Voer het uit
3) Ga naar web-GUI (1.2.3.4:7180)
4) Voeg extra nodes toe in de web-gui (installeer de cloudera-software NIET op andere nodes, het doet het allemaal voor je)
5) Ga in de web-GUI naar Home, klik op Hue en Hue Web UI. Dit geeft je toegang tot Hive, Pig, Sqoop etc.