Apache Spark - Unable to load native-hadoop library

Apache Spark - Unable to load native-hadoop library
BO
  • Rejestracja:około 9 lat
  • Ostatnio:około 9 lat
  • Postów:10
0

Oto log z kompilacji programu który liczy liczbę PI. Zastanawia mnie ostrzerzenie które pojawia się w compile-logu.

-Jak usunąć to ostrzerzenie które pojawia się w 3 linijce ?

-Czy jest mi to do szczęscia potrzebne i co to zmieni ?

Nie jestem obeznany w temacie Sparka ani Hadoop, więc bardzo proszę o pomoc i przedstawienie spojrzenia na to zagadnienie.

Kopiuj
 Using Spark's default log4j profile: org/apache/spark/log4j-defaults.properties
16/02/28 03:28:41 INFO SparkContext: Running Spark version 1.4.0
16/02/28 03:28:41 WARN NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
16/02/28 03:28:41 INFO SecurityManager: Changing view acls to: Adam
16/02/28 03:28:42 INFO SecurityManager: Changing modify acls to: Adam
16/02/28 03:28:42 INFO SecurityManager: SecurityManager: authentication disabled; ui acls disabled; users with view permissions: Set(Adam); users with modify permissions: Set(Adam)
16/02/28 03:28:42 INFO Slf4jLogger: Slf4jLogger started
16/02/28 03:28:42 INFO Remoting: Starting remoting
16/02/28 03:28:43 INFO Remoting: Remoting started; listening on addresses :[akka.tcp://sparkDriver@192.168.56.1:52223]
16/02/28 03:28:43 INFO Utils: Successfully started service 'sparkDriver' on port 52223.
16/02/28 03:28:43 INFO SparkEnv: Registering MapOutputTracker
16/02/28 03:28:43 INFO SparkEnv: Registering BlockManagerMaster
16/02/28 03:28:43 INFO DiskBlockManager: Created local directory at C:\Users\Adam\AppData\Local\Temp\spark-3313d7e1-649e-41d3-beed-dbf30e0fafa9\blockmgr-d7ec9b86-3170-4efd-adff-9ad84dce953c
16/02/28 03:28:43 INFO MemoryStore: MemoryStore started with capacity 969.8 MB
16/02/28 03:28:43 INFO HttpFileServer: HTTP File server directory is C:\Users\Adam\AppData\Local\Temp\spark-3313d7e1-649e-41d3-beed-dbf30e0fafa9\httpd-d2c8c0d2-6270-48b8-a61b-9107fc99922e
16/02/28 03:28:43 INFO HttpServer: Starting HTTP Server
16/02/28 03:28:44 INFO Utils: Successfully started service 'HTTP file server' on port 52224.
16/02/28 03:28:44 INFO SparkEnv: Registering OutputCommitCoordinator
16/02/28 03:28:44 INFO Utils: Successfully started service 'SparkUI' on port 4040.
16/02/28 03:28:44 INFO SparkUI: Started SparkUI at http://192.168.56.1:4040
16/02/28 03:28:44 INFO Executor: Starting executor ID driver on host localhost
16/02/28 03:28:45 INFO Utils: Successfully started service 'org.apache.spark.network.netty.NettyBlockTransferService' on port 52243.
16/02/28 03:28:45 INFO NettyBlockTransferService: Server created on 52243
16/02/28 03:28:45 INFO BlockManagerMaster: Trying to register BlockManager
16/02/28 03:28:45 INFO BlockManagerMasterEndpoint: Registering block manager localhost:52243 with 969.8 MB RAM, BlockManagerId(driver, localhost, 52243)
16/02/28 03:28:45 INFO BlockManagerMaster: Registered BlockManager
16/02/28 03:28:46 INFO SparkContext: Starting job: reduce at JavaSparkPi.java:37
16/02/28 03:28:46 INFO DAGScheduler: Got job 0 (reduce at JavaSparkPi.java:37) with 2 output partitions (allowLocal=false)
16/02/28 03:28:46 INFO DAGScheduler: Final stage: ResultStage 0(reduce at JavaSparkPi.java:37)
16/02/28 03:28:46 INFO DAGScheduler: Parents of final stage: List()
16/02/28 03:28:46 INFO DAGScheduler: Missing parents: List()
16/02/28 03:28:46 INFO DAGScheduler: Submitting ResultStage 0 (MapPartitionsRDD[1] at map at JavaSparkPi.java:33), which has no missing parents
16/02/28 03:28:47 INFO MemoryStore: ensureFreeSpace(3088) called with curMem=0, maxMem=1016950947
16/02/28 03:28:47 INFO MemoryStore: Block broadcast_0 stored as values in memory (estimated size 3.0 KB, free 969.8 MB)
16/02/28 03:28:47 INFO MemoryStore: ensureFreeSpace(1765) called with curMem=3088, maxMem=1016950947
16/02/28 03:28:47 INFO MemoryStore: Block broadcast_0_piece0 stored as bytes in memory (estimated size 1765.0 B, free 969.8 MB)
16/02/28 03:28:47 INFO BlockManagerInfo: Added broadcast_0_piece0 in memory on localhost:52243 (size: 1765.0 B, free: 969.8 MB)
16/02/28 03:28:47 INFO SparkContext: Created broadcast 0 from broadcast at DAGScheduler.scala:874
16/02/28 03:28:47 INFO DAGScheduler: Submitting 2 missing tasks from ResultStage 0 (MapPartitionsRDD[1] at map at JavaSparkPi.java:33)
16/02/28 03:28:47 INFO TaskSchedulerImpl: Adding task set 0.0 with 2 tasks
16/02/28 03:28:47 WARN TaskSetManager: Stage 0 contains a task of very large size (977 KB). The maximum recommended task size is 100 KB.
16/02/28 03:28:47 INFO TaskSetManager: Starting task 0.0 in stage 0.0 (TID 0, localhost, PROCESS_LOCAL, 1001438 bytes)
16/02/28 03:28:47 INFO TaskSetManager: Starting task 1.0 in stage 0.0 (TID 1, localhost, PROCESS_LOCAL, 1001438 bytes)
16/02/28 03:28:47 INFO Executor: Running task 1.0 in stage 0.0 (TID 1)
16/02/28 03:28:47 INFO Executor: Running task 0.0 in stage 0.0 (TID 0)
16/02/28 03:28:48 INFO Executor: Finished task 1.0 in stage 0.0 (TID 1). 736 bytes result sent to driver
16/02/28 03:28:48 INFO Executor: Finished task 0.0 in stage 0.0 (TID 0). 736 bytes result sent to driver
16/02/28 03:28:48 INFO TaskSetManager: Finished task 1.0 in stage 0.0 (TID 1) in 563 ms on localhost (1/2)
16/02/28 03:28:48 INFO TaskSetManager: Finished task 0.0 in stage 0.0 (TID 0) in 852 ms on localhost (2/2)
16/02/28 03:28:48 INFO DAGScheduler: ResultStage 0 (reduce at JavaSparkPi.java:37) finished in 0.867 s
16/02/28 03:28:48 INFO TaskSchedulerImpl: Removed TaskSet 0.0, whose tasks have all completed, from pool 
16/02/28 03:28:48 INFO DAGScheduler: Job 0 finished: reduce at JavaSparkPi.java:37, took 1.621955 s
Pi is roughly 3.14624
16/02/28 03:28:48 INFO SparkUI: Stopped Spark web UI at http://192.168.56.1:4040
16/02/28 03:28:48 INFO DAGScheduler: Stopping DAGScheduler
16/02/28 03:28:48 INFO MapOutputTrackerMasterEndpoint: MapOutputTrackerMasterEndpoint stopped!
16/02/28 03:28:48 INFO Utils: path = C:\Users\Adam\AppData\Local\Temp\spark-3313d7e1-649e-41d3-beed-dbf30e0fafa9\blockmgr-d7ec9b86-3170-4efd-adff-9ad84dce953c, already present as root for deletion.
16/02/28 03:28:48 INFO MemoryStore: MemoryStore cleared
16/02/28 03:28:48 INFO BlockManager: BlockManager stopped
16/02/28 03:28:48 INFO BlockManagerMaster: BlockManagerMaster stopped
16/02/28 03:28:48 INFO OutputCommitCoordinator$OutputCommitCoordinatorEndpoint: OutputCommitCoordinator stopped!
16/02/28 03:28:48 INFO SparkContext: Successfully stopped SparkContext
16/02/28 03:28:48 INFO Utils: Shutdown hook called
16/02/28 03:28:48 INFO Utils: Deleting directory C:\Users\Adam\AppData\Local\Temp\spark-3313d7e1-649e-41d3-beed-dbf30e0fafa9
SM
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 6 lat
  • Postów:52
0
BO
  • Rejestracja:około 9 lat
  • Ostatnio:około 9 lat
  • Postów:10
0

Nie jest ciężko, czytałem już to. Chodzi o to że nie rozumiem tego co tam się dzieje, nie korzystam z linux'a tylko windows 8, potrzebuję instrukcji na windows 8.

SM
  • Rejestracja:ponad 13 lat
  • Ostatnio:około 6 lat
  • Postów:52
1

https://hadoop.apache.org/docs/r2.4.1/hadoop-project-dist/hadoop-common/NativeLibraries.html

Hadoop has native implementations of certain components for performance reasons and for non-availability of Java implementations. These components are available in a single, dynamically-linked native library called the native hadoop library. On the *nix platforms the library is named libhadoop.so.

oraz

*The native hadoop library is supported on nix platforms only. The library does not to work with Cygwin or the Mac OS X platform.

Czyli jak chcesz ze względów na wydajność korzystać z native'ów to sugeruje linuxa.

BO
  • Rejestracja:około 9 lat
  • Ostatnio:około 9 lat
  • Postów:10
0

Taki ogólnie mam zamiar i zrobię to w zbliżającym się czasie, dzięki za pomoc :)

edytowany 1x, ostatnio: boplight
wojtala6
  • Rejestracja:prawie 14 lat
  • Ostatnio:prawie 9 lat
  • Postów:18
0

Ogólnie uruchamianie Spark'a na windowsie jest problematyczne. Polecam jak kolega wyżej zainstalować linux'a.

0

Chciałem napisać jakieś testy do tego sparka...
dostaje na twarz Exception : Caused by: java.io.NotSerializableException: org.scalatest.Assertions$AssertionsHelper

Czyli ten problem: https://github.com/scalatest/scalatest/issues/542

Wie ktoś może jak to fixnąć?

Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 22 godziny
0

Pewnie tak jak zasugerowano w komentarzach, czyli zmień jakąś klasę wewnętrzną (np anonimową) na statyczną lub zewnętrzną.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
0

Ok działa gdy zmieniłem na testowaną klasę na 'object'. Trochę mało to wygodne.

Mało znam scalę, bardziej jave, podejrzewam, że jakbym to sobie injectował to by zadziałało, ale jeszcze nie wiem jak to można zrobic w scala.

Podejrzewam, że mógłbym sobie zrobic jakiegos traita czy cos ;]

Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 22 godziny
0

A po co zamieniać na object? Przecież w artykule jest wyraźnie napisane by tylko wyciągnąć klasę na zewnątrz. Nie ma w tym nic skomplikowanego. Po prostu zamiast:

Kopiuj
class Klasa1 extends NotSerializable {
  class Klasa2() extends Serializable
}

Robisz:

Kopiuj
class Klasa1() extends NotSerializable
class Klasa2() extends Serializable

(NotSerializable zwykle nie istnieje, jest tutaj tylko dla celów poglądowych)
Cały problem ma związek z serializacją. Serializując wewnętrzną klasę niestatyczną trzeba też zserializować klasę zewnętrzną (ponieważ wewnętrzne klasy niestatyczne mają implicite referencję do klasy otaczającej), więc jeżeli coś w klasie zewnętrznej jest nieserializowalne to serializacja się wysypie. To są podstawy działania Javy i wszystko jest objaśnione w komentarzach do zgłoszenia, które zalinkowałeś.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
edytowany 1x, ostatnio: Wibowit
0

To się sypie tylko w testach tak w ogóle, przy odpalaniu aplikacji działa ok.

W moim przypadku w klasie w której coś jest NotSerializable nie ma żadnej zagnieżdżonej klasy, pewnie jakaś z jej metod coś robi co powoduje problem.
Pewnie starczy jak jedna z metod będzie statyczna lub właśnie ją wyciągne do innej klasy czy cokolwiek.

Wibowit
  • Rejestracja:prawie 20 lat
  • Ostatnio:około 22 godziny
0

Pokaż kod testu w którym występuje problem.


"Programs must be written for people to read, and only incidentally for machines to execute." - Abelson & Sussman, SICP, preface to the first edition
"Ci, co najbardziej pragną planować życie społeczne, gdyby im na to pozwolić, staliby się w najwyższym stopniu niebezpieczni i nietolerancyjni wobec planów życiowych innych ludzi. Często, tchnącego dobrocią i oddanego jakiejś sprawie idealistę, dzieli od fanatyka tylko mały krok."
Demokracja jest fajna, dopóki wygrywa twoja ulubiona partia.
0

wyrzuciłem jedną metodę, która zwracała RDD[Row] do innej klasy i zaczęło dzialac. dzieki.

Kliknij, aby dodać treść...

Pomoc 1.18.8

Typografia

Edytor obsługuje składnie Markdown, w której pojedynczy akcent *kursywa* oraz _kursywa_ to pochylenie. Z kolei podwójny akcent **pogrubienie** oraz __pogrubienie__ to pogrubienie. Dodanie znaczników ~~strike~~ to przekreślenie.

Możesz dodać formatowanie komendami , , oraz .

Ponieważ dekoracja podkreślenia jest przeznaczona na linki, markdown nie zawiera specjalnej składni dla podkreślenia. Dlatego by dodać podkreślenie, użyj <u>underline</u>.

Komendy formatujące reagują na skróty klawiszowe: Ctrl+B, Ctrl+I, Ctrl+U oraz Ctrl+S.

Linki

By dodać link w edytorze użyj komendy lub użyj składni [title](link). URL umieszczony w linku lub nawet URL umieszczony bezpośrednio w tekście będzie aktywny i klikalny.

Jeżeli chcesz, możesz samodzielnie dodać link: <a href="link">title</a>.

Wewnętrzne odnośniki

Możesz umieścić odnośnik do wewnętrznej podstrony, używając następującej składni: [[Delphi/Kompendium]] lub [[Delphi/Kompendium|kliknij, aby przejść do kompendium]]. Odnośniki mogą prowadzić do Forum 4programmers.net lub np. do Kompendium.

Wspomnienia użytkowników

By wspomnieć użytkownika forum, wpisz w formularzu znak @. Zobaczysz okienko samouzupełniające nazwy użytkowników. Samouzupełnienie dobierze odpowiedni format wspomnienia, zależnie od tego czy w nazwie użytkownika znajduje się spacja.

Znaczniki HTML

Dozwolone jest używanie niektórych znaczników HTML: <a>, <b>, <i>, <kbd>, <del>, <strong>, <dfn>, <pre>, <blockquote>, <hr/>, <sub>, <sup> oraz <img/>.

Skróty klawiszowe

Dodaj kombinację klawiszy komendą notacji klawiszy lub skrótem klawiszowym Alt+K.

Reprezentuj kombinacje klawiszowe używając taga <kbd>. Oddziel od siebie klawisze znakiem plus, np <kbd>Alt+Tab</kbd>.

Indeks górny oraz dolny

Przykład: wpisując H<sub>2</sub>O i m<sup>2</sup> otrzymasz: H2O i m2.

Składnia Tex

By precyzyjnie wyrazić działanie matematyczne, użyj składni Tex.

<tex>arcctg(x) = argtan(\frac{1}{x}) = arcsin(\frac{1}{\sqrt{1+x^2}})</tex>

Kod źródłowy

Krótkie fragmenty kodu

Wszelkie jednolinijkowe instrukcje języka programowania powinny być zawarte pomiędzy obróconymi apostrofami: `kod instrukcji` lub ``console.log(`string`);``.

Kod wielolinijkowy

Dodaj fragment kodu komendą . Fragmenty kodu zajmujące całą lub więcej linijek powinny być umieszczone w wielolinijkowym fragmencie kodu. Znaczniki ``` lub ~~~ umożliwiają kolorowanie różnych języków programowania. Możemy nadać nazwę języka programowania używając auto-uzupełnienia, kod został pokolorowany używając konkretnych ustawień kolorowania składni:

```javascript
document.write('Hello World');
```

Możesz zaznaczyć również już wklejony kod w edytorze, i użyć komendy  by zamienić go w kod. Użyj kombinacji Ctrl+`, by dodać fragment kodu bez oznaczników języka.

Tabelki

Dodaj przykładową tabelkę używając komendy . Przykładowa tabelka składa się z dwóch kolumn, nagłówka i jednego wiersza.

Wygeneruj tabelkę na podstawie szablonu. Oddziel komórki separatorem ; lub |, a następnie zaznacz szablonu.

nazwisko;dziedzina;odkrycie
Pitagoras;mathematics;Pythagorean Theorem
Albert Einstein;physics;General Relativity
Marie Curie, Pierre Curie;chemistry;Radium, Polonium

Użyj komendy by zamienić zaznaczony szablon na tabelkę Markdown.

Lista uporządkowana i nieuporządkowana

Możliwe jest tworzenie listy numerowanych oraz wypunktowanych. Wystarczy, że pierwszym znakiem linii będzie * lub - dla listy nieuporządkowanej oraz 1. dla listy uporządkowanej.

Użyj komendy by dodać listę uporządkowaną.

1. Lista numerowana
2. Lista numerowana

Użyj komendy by dodać listę nieuporządkowaną.

* Lista wypunktowana
* Lista wypunktowana
** Lista wypunktowana (drugi poziom)

Składnia Markdown

Edytor obsługuje składnię Markdown, która składa się ze znaków specjalnych. Dostępne komendy, jak formatowanie , dodanie tabelki lub fragmentu kodu są w pewnym sensie świadome otaczającej jej składni, i postarają się unikać uszkodzenia jej.

Dla przykładu, używając tylko dostępnych komend, nie możemy dodać formatowania pogrubienia do kodu wielolinijkowego, albo dodać listy do tabelki - mogłoby to doprowadzić do uszkodzenia składni.

W pewnych odosobnionych przypadkach brak nowej linii przed elementami markdown również mógłby uszkodzić składnie, dlatego edytor dodaje brakujące nowe linie. Dla przykładu, dodanie formatowania pochylenia zaraz po tabelce, mogłoby zostać błędne zinterpretowane, więc edytor doda oddzielającą nową linię pomiędzy tabelką, a pochyleniem.

Skróty klawiszowe

Skróty formatujące, kiedy w edytorze znajduje się pojedynczy kursor, wstawiają sformatowany tekst przykładowy. Jeśli w edytorze znajduje się zaznaczenie (słowo, linijka, paragraf), wtedy zaznaczenie zostaje sformatowane.

  • Ctrl+B - dodaj pogrubienie lub pogrub zaznaczenie
  • Ctrl+I - dodaj pochylenie lub pochyl zaznaczenie
  • Ctrl+U - dodaj podkreślenie lub podkreśl zaznaczenie
  • Ctrl+S - dodaj przekreślenie lub przekreśl zaznaczenie

Notacja Klawiszy

  • Alt+K - dodaj notację klawiszy

Fragment kodu bez oznacznika

  • Alt+C - dodaj pusty fragment kodu

Skróty operujące na kodzie i linijkach:

  • Alt+L - zaznaczenie całej linii
  • Alt+, Alt+ - przeniesienie linijki w której znajduje się kursor w górę/dół.
  • Tab/⌘+] - dodaj wcięcie (wcięcie w prawo)
  • Shit+Tab/⌘+[ - usunięcie wcięcia (wycięcie w lewo)

Dodawanie postów:

  • Ctrl+Enter - dodaj post
  • ⌘+Enter - dodaj post (MacOS)