Сбой сборки Hadoop 3.1 в `protoc --version` - PullRequest
0 голосов
/ 15 мая 2018

Я пытаюсь скомпилировать Hadoop 3.1 из его исходного кода. Оказавшись внутри docker-контейнера, я создаю его с помощью maven, следуя инструкциям в BUILDING.txt внутри файлов исходного кода Hadoop. Пока Apache Hadoop Common ............................... FAILURE [ 0.458 s] пытается построить, я получаю следующую ошибку, касающуюся protoc --version

[ERROR] Failed to execute goal org.apache.hadoop:hadoop-maven-plugins:3.1.0:protoc (compile-protoc) on project hadoop-common: org.apache.maven.plugin.MojoExecutionException: 'protoc --version' did not return a version -> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.hadoop:hadoop-maven-plugins:3.1.0:protoc (compile-protoc) on project hadoop-common: org.apache.maven.plugin.MojoExecutionException: 'protoc --version' did not return a version

Хотя, когда я пытаюсь запустить protoc --version в bash, результаты возвращаются в норму. vilak@bc21b16a4162:~/hadoop$ protoc Missing input file. vilak@bc21b16a4162:~/hadoop$ protoc --version libprotoc 2.5.0 vilak@bc21b16a4162:~/hadoop$

То же самое происходит с ProtoC версии 3.0

Кто-нибудь испытывал нечто подобное?

1 Ответ

0 голосов
/ 16 мая 2018

Не найдя точного решения, вот обходной путь.

Исходный код Hadoop поставляется с ./start-build-env.sh. После запуска скрипта будет запущен Docker container, в котором Hadoop может быть собран с Maven.

Все необходимые библиотеки существуют в контейнере, но включены только в $PATH пользователя, а не в корневой каталог $PATH. Это проблема, потому что очень удобно использовать sudo для сборки пакета, и именно поэтому protoc --version не может что-то вернуть.

Теперь каждый контейнер, запускаемый ./start-build-env.sh, кажется временным, и вы не можете редактировать корень $PATH через ~/.bashrc. Обходной путь - запустить контейнер через ./start-build-env.sh и из другого окна терминала войти в контейнер с помощью команды: sudo docker exec -it <container> bash. Теперь вы можете скачать простой редактор (например, nano или vi - apt-get) и редактировать значения по умолчанию $PATH в visudo.

Тогда команда sudo mvn package -Pdist... внутри контейнера не застрянет в проблеме, которую я описал выше

...