Если вы используете операционную систему Windows 10, вы можете воспользоваться Windows Subsystem for Linux для компиляции и установки.
Microsoft предлагает технологию виртуализации Hyper-V в операционной системе Windows 10. Сначала установите Docker Desktop на Windows.
Подсказка: В более новой версии можно выбрать между контейнерами Windows и Linux. Основное различие между ними заключается в том, что они используют разные сетевые протоколы.
По умолчанию в режиме Linux контейнеров Docker предоставляет три типа сетей: bridge, host и none. В режиме Windows контейнеров используется NAT-сетевая конфигурация. Это означает, что если вы разрабатываете и отлаживаете контейнеры локально, вы можете использовать NAT-сети и маршрут для доступа к конечным точкам контейнеров из приложений Windows. Таким образом, использование этого режима и контейнеров Linux является удобным решением для локальной разработки.
Вы можете настроить Docker Desktop по ссылке https://www.jianshu.com/p/97d16b68045f, чтобы использовать одну виртуальную машину Docker в WSL, при этом контейнеры остаются изолированными.
После установки Docker Desktop Hyper-V создаст виртуальную машину по умолчанию. В данном случае используется конфигурация сети Default Switch, которая является решением на основе NAT.
Перейдите в Microsoft Store.
Здесь выбран Ubuntu 18.04 LTS, так как он имеет хорошую оценку среди бесплатных версий. Для пользователей, предпочитающих CentOS, можно выбрать CentOS 7.
После установки на вашем компьютере появится быстрый доступ к подсистеме.
WSL делится всеми переменными окружения Windows. Однако приложения, такие как Java, Go, Python, установленные на Windows, не могут быть запущены на Ubuntu. Поэтому нам нужно будет настроить среду.
Эта версия по умолчанию включает Git. Если его нет, установите его.
apt-get update
apt-get install git
Я установил openjdk8.
apt-cache search openjdk-8
apt-get install openjdk-8-jdk
Учитывая компиляцию для edge, я также установил Go, хотя компиляция не прошла из-за того, что скрипт компиляции streamsets-datacollector-edge проверяет состояние диска и другие параметры среды. Если вас это интересует, попробуйте сами:
Компиляция для edge использует модуль gogradle, в котором используется версия go1.13.5. Для избегания автоматической настройки рекомендуется установить Go вручную:
$ mkdir download && cd download
$ wget https://studygolang.com/dl/golang/go1.13.5.linux-amd64.tar.gz
$ sudo tar -zxvf go1.13.5.linux-amd64.tar.gz -C /usr/local/go
```### Maven
```shell
$ wget https://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.6.3/binaries/apache-maven-3.6.3-bin.tar.gz
$ sudo tar -zxvf apache-maven-3.6.3-bin.tar.gz -C /usr/local/maven-3.6.3
$ vim ~/.bashrc
export DOCKER_HOST=tcp://localhost:2375
export GOROOT=/usr/local/go
export GOPATH=/mnt/d/iProject/go-ws
export M2_HOME=/usr/local/maven-3.6.3
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=$PATH:$GOROOT/bin:$GOPATH/bin:$M2_HOME/bin:${JAVA_HOME}/bin
Проверьте состояние подключения диска в WSL, да, вы правильно поняли, GOPATH и локальный репозиторий Maven можно указать в одном и том же каталоге, который находится на Windows, так как зависимости могут занимать значительное место (неужели вы испытываете чувство радости и слез?). Приходите, обнимите меня и заплачьте!
<localRepository>/mnt/d/iProject/maven_repositories</localRepository>
# Тестирование
go version
java -version
javac
mvn --version
Так как фронтенд проекта StreamSets Data Collector UI использует React, необходимо установить среду Node. К счастью, Ubuntu уже содержит Node, хотя версия немного ниже, но после тестирования проблем не возникло.```shell $ node -v v8.10.0 $ npm -v 3.5.2
$ npm install -g bower $ npm install -g grunt $ npm install -g npx $ npm install -g npm-check $ npm install -g yarn $ npm install -g yarnpkg
$ ls -l /usr/local/bin/
drwxr-xr-x 1 root root 4096 апр 2 10:11 ./
drwxr-xr-x 1 root root 4096 апр 1 10:52 ../
lrwxrwxrwx 1 root root 35 апр 2 09:59 bower -> ../lib/node_modules/bower/bin/bower*
lrwxrwxrwx 1 root root 35 апр 2 10:00 grunt -> ../lib/node_modules/grunt/bin/grunt*
lrwxrwxrwx 1 root root 40 апр 2 10:01 npm-check -> ../lib/node_modules/npm-check/bin/cli.js*
lrwxrwxrwx 1 root root 32 апр 2 10:02 npx -> ../lib/node_modules/npx/index.js*
lrwxrwxrwx 1 root root 39 апр 2 10:11 yarn -> ../lib/node_modules/yarnpkg/bin/yarn.js*
lrwxrwxrwx 1 root root 36 апр 2 10:10 yarnpkg -> ../lib/node_modules/yarn/bin/yarn.js*
```# Настройка конфигурационного файла для bower для выполнения команд bower от имени root
$ vim ~/.bowerrc
{"allow_root": true}
Рекомендую разработчикам всё-таки использовать программы для обхода блокировок, я использую v2rayN, информацию о том, как его получить и использовать, можно найти на Baidu. В отношении услуг, я приобрёл их на сайте http://citysss.xyz/. Стоимость за полгодие составляет 60 юаней, 360 ГБ, что довольно выгодно. Поддерживает прокси SOCKS5. Если вы просто используете Google для поиска информации, можно использовать плагин Ghelper для Chrome.
Это чисто информационное сообщение, без рекламы.
Получение адреса vmess
Нажмите на сервер -> Импортировать URL-адреса из буфера обмена, в нижнем левом углу отобразится открытый локальный порт прокси
Покупка была сделана, но использовалось не так много. Компиляция streamsets использовала около 4 ГБ трафика, поэтому за полгодие, вероятно, не удастся использовать весь трафик.
# Установка прокси:
git config --global http.proxy 'socks5://127.0.0.1:10808'
git config --global https.proxy 'socks5://127.0.0.1:10808'
# Просмотр прокси:
git config --global --get http.proxy
git config --global --get https.proxy
# Отключение прокси:
git config --global --unset http.proxy
git config --global --unset https.proxy
```# На самом деле, это настройка в файле .gitconfig в корневом каталоге текущего пользователя
### Настройка прокси для Maven
```xml
<proxies>
<proxy>
<id>ss</id>
<active>true</active>
<protocol>socks</protocol>
<host>127.0.0.1</host>
<port>10808</port>
</proxy>
</proxies>
cd /mnt/d/iProject/streamsets/datacollector-edge
vim gradle.properties
appName=streamsets-datacollector-edge
version=3.14.0
gitPath=github.com/streamsets/datacollector-edge
dockerImageName=streamsets/datacollector-edge
binaryName=edge
platforms=linux-arm,linux-arm64,linux-amd64,darwin-amd64,windows-amd64
includeStage=kafka javascript aws
# Добавьте следующую строку
org.gradle.jvmargs=-DsocksProxyHost=127.0.0.1 -DsocksProxyPort=10808
cd /mnt/d/iProject/streamset
git clone http://github.com/streamsets/datacollector-api
cd datacollector-api
git checkout -b 3.14.0 3.14.0
sudo mvn clean install -DskipTests
cd /mnt/d/iProject/streamset
git clone http://github.com/streamsets/datacollector-plugin-api
cd datacollector-plugin-api
git checkout -b 3.14.0 3.14.0
sudo mvn clean install -DskipTests
# На данный момент компиляция edge в WSL не проходит, основная причина - не проходит проверка подключенного диска. Я использовал покупку недельного периода ECS от Alibaba для успешной компиляции.
cd /mnt/d/iProject/streamset
git clone https://github.com/streamsets/datacollector-edge.git
cd datacollector-edge
git checkout -b 3.14.0 3.14.0
./gradlew goClean dist publishToMavenLocal
cd /mnt/d/iProject/streamset
git clone http://github.com/streamsets/datacollector
cd datacollector
git checkout -b 3.14.0 3.14.0
sudo mvn package -Pdist,ui -DskipTests -DskipRat
cd /mnt/d/iProject/streamset/datacollector/dist/target/streamsets-datacollector-3.14.0/streamsets-datacollector-3.14.0/libexec/
```vim _sdc
# После 100 строки добавьте следующие две строки
# Эта строка включает System.out для com.streamsets.pipeline.BootstrapMain
SDC_JAVA_OPTS="${SDC_JAVA_OPTS} -Dstreamsets.bootstrap.debug=true"
# Эта строка включает System.err для com.streamsets.pipeline.SDCClassLoader
# Настройте ulimit в WSL
ulimit -SHn 65536
# Для просмотра выходных данных загрузки классов можно перенаправить все STDOUT и STDERR в каталог log
./bin/streamsets dc > ./log/start.log 2>&1
# Запуск логи сохранены в каталоге start-class-load-log
Когда возникает ошибка "класс не найден", я подумал, что опять совершил непростительную ошибку. Поэтому я попытался прямо из релизов на GitHub-репозитории StreamSets DataCollector скачать версию 3.14.0. В результате компиляции появилась такая же ошибка.
cp ./streamsets-libs/streamsets-datacollector-orchestrator-lib/lib/jersey-client-2.25.1.jar ./container-lib/
cp ./streamsets-libs/streamsets-datacollector-orchestrator-lib/lib/jersey-common-2.25.1.jar ./container-lib/
cp ./streamsets-libs/streamsets-datacollector-orchestrator-lib/lib/jersey-guava-2.25.1.jar ./container-lib/
cp ./streamsets-libs/streamsets-datacollector-orchestrator-lib/lib/jackson-jaxrs-json-provider-2.8.9.jar ./container-lib/
cp ./streamsets-libs/streamsets-datacollector-orchestrator-lib/lib/swagger-annotations-1.5.13.jar ./container-lib/
cp ./streamsets-libs/streamsets-datacollector-orchestrator-lib/lib/jackson-jaxrs-json-provider-2.8.9.jar ./container-lib/
cp ./streamsets-libs/streamsets-datacollector-orchestrator-lib/lib/jackson-jaxrs-base-2.8.4.jar ./container-lib/
cp ./streamsets-libs/streamsets-datacollector-orchestrator-lib/lib/jackson-module-jaxb-annotations-2.8.9.jar ./container-lib/
cp ./streamsets-libs/streamsets-datacollector-orchestrator-lib/lib/jackson-datatype-joda-2.8.9.jar ./container-lib/
cp ./streamsets-libs/streamsets-datacollector-jks-credentialstore-lib/lib/airline-0.7.jar ./container-lib/
```#### Ошибка 2: Нарушение прав доступа
DataCollector проверяет права доступа на файлы в директории etc. Увы, WSL пока плохо поддерживает команды chmod, поэтому нам пришлось скопировать директорию datacollector из /mnt/d/iProject/streamset/ в директорию, управляемую Ubuntu.
```shell
$ cd /mnt/d/iProject/streamset/
$ cp -r datacollector /home/etl/
# Попробуем исправить права доступа:
$ chmod 600 *
$ chmod 644 credential-stores.properties
$ chmod 644 dpm.properties
$ chmod 644 keystore.jks
$ chmod 644 ldap-login.conf
$ chmod 644 sdc-log4j.properties
$ chmod 644 sdc-security.policy
$ chmod 644 sdc.properties
$ chmod 644 support-bundle-redactor.json
-rw-r--r-- 1 etl etl 0 апр 3 10:45 application-token.txt
-rw------- 1 etl etl 1583 апр 3 10:45 basic-realm.properties
-rw-r--r-- 1 etl etl 14964 апр 3 10:45 credential-stores.properties
-rw------- 1 etl etl 1626 апр 3 10:45 digest-realm.properties
-rw-r--r-- 1 etl etl 2405 апр 3 10:45 dpm.properties
-rw------- 1 etl etl 8 апр 3 10:45 email-password.txt
-rw------- 1 etl etl 1583 апр 3 10:45 form-realm.properties
-rw------- 1 etl etl 9 апр 3 10:45 keystore-password.txt
-rw-r--r-- 1 etl etl 2275 апр 3 10:45 keystore.jks
-rw------- 1 etl etl 9 апр 3 10:45 ldap-bind-password.txt
-rw-r--r-- 1 etl etl 646 апр 3 10:45 ldap-login.conf
-rw-r--r-- 1 etl etl 1946 апр 3 10:45 sdc-log4j.properties
-rw-r--r-- 1 etl etl 2319 апр 3 10:45 sdc-security.policy
-rw-r--r-- 1 etl etl 32228 апр 3 10:45 sdc.properties
-rw-r--r-- 1 etl etl 881 апр 3 10:45 support-bundle-redactor.json
-rw------- 1 etl etl 1167 апр 3 10:45 vault.properties
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )