Как установить клиент Hive "Билайн"?

Как я могу установить клиент улья beeline без необходимости устанавливать всю экосистему кустов /hadoop на моем ноутбуке?

Я хочу использовать его для запроса к удаленной базе данных Hive.

2 ответа

Вы можете получить билайн, установив Hive и Hadoop (Hadoop — необходимая зависимость для Hive).

Сначала загрузите Hadoop common с http://www.apache.org/dyn/closer.cgi/hadoop/common/ . Распаковать и установить переменную HADOOP_HOMEв это место. Пример:

      $ wget https://apache.uib.no/hadoop/common/hadoop-3.3.1/hadoop-3.3.1.tar.gz
$ tar -xzvf hadoop-3.3.1.tar.gz
$ export HADOOP_HOME="$(pwd)/hadoop-3.3.1" # You may want set this var in your .bashrc

Во-вторых, для запуска Hadoop необходимо убедиться, что JAVA_HOMEустановлено:

      # Find java home:
$ java -XshowSettings:properties -version 2>&1 | grep java.home
java.home = /usr/lib/jvm/java-11-openjdk-amd64
$ export JAVA_HOME=/usr/lib/jvm/java-11-openjdk-amd64  # Replace with your JAVA_HOME

В- третьих, загрузите bin -версию Hive с https://hive.apache.org/downloads.html , распакуйте, а затем вы можете запустить bin/beeline. Пример:

      $ wget https://apache.uib.no/hive/hive-3.1.2/apache-hive-3.1.2-bin.tar.gz
$ tar -xzvf apache-hive-3.1.2-bin.tar.gz
$ cd apache-hive-3.1.2-bin
$ /bin/beeline --version
SLF4J: Class path contains multiple SLF4J bindings.
SLF4J: Found binding in [jar:file:/home/mikaelol/projects/kerberos/apache-hive-3.1.2-bin/lib/log4j-slf4j-impl-2.10.0.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: Found binding in [jar:file:/home/mikaelol/projects/kerberos/hadoop-3.3.1/share/hadoop/common/lib/slf4j-log4j12-1.7.30.jar!/org/slf4j/impl/StaticLoggerBinder.class]
SLF4J: See http://www.slf4j.org/codes.html#multiple_bindings for an explanation.
SLF4J: Actual binding is of type [org.apache.logging.slf4j.Log4jLoggerFactory]
Hive 3.1.2
Git git://HW13934/Users/gates/tmp/hive-branch-3.1/hive -r 8190d2be7b7165effa62bd21b7d60ef81fb0e4af
Compiled by gates on Thu Aug 22 15:01:18 PDT 2019
From source with checksum 0492c08f784b188c349f6afb1d8d9847

Нет необходимости устанавливать билайн / улей. Все, что вам нужно сделать, это собрать соответствующие банки из вашей системы и скопировать их и поместить в одну папку.

Предположим, у нас есть исходная система, в которой у вас есть beeline, и целевая система, в которой вы хотите запустить beeline.

В исходной системе соберите соответствующие файлы в одну папку. Лучший способ определить, какие именно jar-файлы существуют, - использовать опцию jvm: -verbose:class

То есть вы должны быть в состоянии выдать java команда, которая будет реплицировать типичный вызов команды beeline в исходной системе.

Затем скопируйте эти файлы в одну папку в целевой системе. cd в эту папку, чтобы сделать -classpath Ссылка позже простая.

Я использую дистрибутив HDP 2.5 Hortonworks. Для меня работает следующий вызов в целевой системе:java -Xmx1024m -classpath apache-log4j-extras-1.2.17.jar:avatica-1.8.0.2.5.0.0-1245.jar:calcite-core-1.2.0.2.5.0.0-1245.jar:calcite-linq4j-1.2.0.2.5.0.0-1245.jar:commons-cli-1.2.jar:commons-codec-1.4.jar:commons-collections-3.2.2.jar:commons-configuration-1.6.jar:commons-lang-2.6.jar:commons-logging-1.1.3.jar:curator-client-2.6.0.jar:curator-framework-2.6.0.jar:derby-10.10.2.0.jar:guava-14.0.1.jar:hadoop-annotations-2.7.3.2.5.0.0-1245.jar:hadoop-auth-2.7.3.2.5.0.0-1245.jar:hadoop-common-2.7.3.2.5.0.0-1245.jar:hadoop-mapreduce-client-core-2.7.3.2.5.0.0-1245.jar:hive-beeline-1.2.1000.2.5.0.0-1245.jar:hive-exec-1.2.1000.2.5.0.0-1245.jar:hive-jdbc-1.2.1000.2.5.0.0-1245.jar:hive-jdbc-1.2.1000.2.5.0.0-1245-standalone.jar:jce.jar:jline-2.12.jar:jsse.jar:log4j-1.2.16.jar:rt.jar:slf4j-log4j12-1.7.10.jar:sunec.jar:sunjce_provider.jar:super-csv-2.2.0.jar:xercesImpl-2.9.1.jar -Dhdp.version=2.5.0.0-1245 -Djava.net.preferIPv4Stack=true -Dhdp.version=2.5.0.0-1245 -Dhadoop.log.dir=/home/userid -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/home/userid -Dhadoop.id.str=userid -Dhadoop.root.logger=INFO,console -Djava.library.path=:/home/userid -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Djava.util.logging.config.file=/home/userid/parquet-logging.properties -Dlog4j.configuration=beeline-log4j.properties -Dhadoop.security.logger=INFO,NullAppender org.apache.hadoop.util.RunJar /home/userid/hive-beeline-1.2.1000.2.5.0.0-1245.jar org.apache.hive.beeline.BeeLine -n userid -p pass -u "jdbc:hive2://knox.company.com:8000/;ssl=true;transportMode=http;httpPath=gateway/tdcprd/hive"

Некоторые параметры, вероятно, не нужны, но я сохранил их, потому что именно так это делается в исходной системе. Вы должны использовать вызов Java исходной системы в качестве эталонного шаблона.

Другие вопросы по тегам