База кода SVN для этой статьи здесь .
В продолжение части 1 этот раздел охватывает
- Настройка Hadoop, Hbase, Hive на новую Ubuntu VM
- Запустите Hadoop, Hbase и Hive как сервисы
- Настройте пакетный проект Spring и запустите тесты
- Некоторые полезные команды / советы
Для начала позвольте мне сказать вам, что выбор Hive заключался в том, чтобы понять, не использовать ли Hive в качестве эквивалента JDBC. Это было больше, чтобы понять, как использовать Hive как мощный аналитический механизм хранилища данных.
Настройка Hadoop, Hbase, Hive на новую Ubuntu VM
Загрузите последние версии Hadoop , Hbase и Hive с веб-сайтов Apache. Вы также можете перейти на веб-сайт Cloudera и получить виртуальную машину Cloudera UBuntu и использовать apt-get install hadoop, hbase и hive. Это не сработало для меня, если вы предприимчивы, вы можете попробовать это. Вы также можете попробовать виртуальные машины MapR. И Cloudera, и MapR имеют хорошую документацию и учебные пособия.
Разархивируйте файл в домашнем каталоге, перейдите в файл .profile и добавьте каталоги bin в путь, как показано ниже,
export HADOOP_HOME=<HADOOP HOME> export HBASE_HOME=<HBASE HOME> export HIVE_HOME=<HIVE HOME> export PATH=$PATH:$HADOOP_HOME/bin:$HBASE_HOME/bin:$HIVE_HOME/bin sudo mkdir -p /app/hadoop/tmp sudo chown <login user>:<machine name>/app/hadoop/tmp hadoop namenode -format
Установите переменные окружения HADOOP_HOME, HBASE_HOME и HIVE_HOME.
Запустите ifconfig и получите IP-адрес, это будет что-то вроде, 192.168.45.129
Перейдите в файл etc / hosts и добавьте следующую запись:
192.168.45.129 <machine name>
Запустите Hadoop, Hbase и Hive как сервисы
Перейдите в корневую папку hadoop и выполните следующую команду:
start-all.sh
Откройте браузер и зайдите на http: // localhost: 50060 / откроется консоль администратора hadoop. Если есть какие-то проблемы, выполните команду ниже и посмотрите, есть ли исключения
tail -f $HADOOP_HOME/logs/hadoop-<login username>-namenode-<machine name>.log
Hadoop по умолчанию работает в порту 54310.
Перейдите в корневую папку hbase и выполните следующую команду:
start-hbase.sh tail -f $HBASE_HOME/logs/hbase--master-.log
Посмотрите, есть ли какие-либо ошибки. Hbase работает в порту 60000 по умолчанию.
Перейдите в корневую папку куста и выполните следующую команду:
hive --service hiveserver -hiveconf hbase.master=localhost:60000 mapred.job.tracker=local
Обратите внимание, что, дав ссылку на hbase, мы интегрировали улей с hbase. Также порт hive по умолчанию — 10000. Теперь запустите hive в качестве клиента командной строки следующим образом:
hive -h localhost
Создайте таблицу семян, как показано ниже,
CREATE TABLE weblogs(key int, client_ip string, day string, month string, year string, hour string, minute string, second string, user string, loc string) row format delimited fields terminated by '\t'; CREATE TABLE hbase_weblogs_1(key int, client_ip string, day string, month string, year string, hour string, minute string, second string, user string, loc string) STORED BY 'org.apache.hadoop.hive.hbase.HBaseStorageHandler' WITH SERDEPROPERTIES ("hbase.columns.mapping" = ":key, cf1:client_ip, cf2:day, cf3:month, cf4:year, cf5:hour, cf6:minute, cf7:second, cf8:user, cf9:loc") TBLPROPERTIES ("hbase.table.name" = "hbase_weblog"); LOAD DATA LOCAL INPATH '/home/hduser/batch-wordcount/weblogs_parse1.txt' OVERWRITE INTO TABLE weblogs; INSERT OVERWRITE TABLE hbase_weblogs_1 SELECT * FROM weblogs;
Настройте пакетный проект Spring и запустите тесты.
Для настройки этого проекта получите последний код из SVN, упомянутый в начале. Скачайте Gradle и настройте путь в .profile. Теперь выполните следующую команду для загрузки данных,
gradle -Dtest=org.springframework.data.hadoop.samples.DataloadWorkflowTests test
Запустите джунит ниже, чтобы получить данные анализа,
gradle -Dtest=org.springframework.data.hadoop.samples.AnalyzeWorkflowTests test
hadoopVersion составляет 1.0.2. файл build.gradle выглядит так, как показано ниже,
repositories { // Public Spring artefacts mavenCentral() maven { url "http://repo.springsource.org/libs-release" } maven { url "http://repo.springsource.org/libs-milestone" } maven { url "http://repo.springsource.org/libs-snapshot" } maven { url "http://www.datanucleus.org/downloads/maven2/" } maven { url "http://oss.sonatype.org/content/repositories/snapshots" } maven { url "http://people.apache.org/~rawson/repo" } maven { url "https://repository.cloudera.com/artifactory/cloudera-repos/"} } dependencies { compile ("org.springframework.data:spring-data-hadoop:$version") { exclude group: 'org.apache.thrift', module: 'thrift' } compile "org.apache.hadoop:hadoop-examples:$hadoopVersion" compile "org.springframework.batch:spring-batch-core:$springBatchVersion" // update the version that comes with Batch compile "org.springframework:spring-tx:$springVersion" compile "org.apache.hive:hive-service:0.9.0" compile "org.apache.hive:hive-builtins:0.9.0" compile "org.apache.thrift:libthrift:0.8.0" runtime "org.codehaus.groovy:groovy:$groovyVersion" // see HADOOP-7461 runtime "org.codehaus.jackson:jackson-mapper-asl:$jacksonVersion" testCompile "junit:junit:$junitVersion" testCompile "org.springframework:spring-test:$springVersion" }
Конфигурация Spring Data Hadoop выглядит следующим образом:
<configuration> <!-- The value after the question mark is the default value if another value for hd.fs is not provided --> fs.default.name=${hd.fs:hdfs://localhost:9000} mapred.job.tracker=local</pre> </configuration> <hive-client host="localhost" port="10000" />
Весеннее пакетное задание выглядит так, как показано ниже,
<batch:job id="job1"> <batch:step id="import"> <batch:tasklet ref="hive-script"/> </batch:step> </batch:job>
Скрипт Spring Data Hive для загрузки данных, как показано ниже,
<hive-tasklet id="hive-script"> <script> LOAD DATA LOCAL INPATH '/home/hduser/batch-analysis/weblogs_parse.txt' OVERWRITE INTO TABLE weblogs; INSERT OVERWRITE TABLE hbase_weblogs_1 SELECT * FROM weblogs; </script> </hive-tasklet>
Скрипт Spring Data Hive для анализа данных, как показано ниже,
<hive-tasklet id="hive-script"> <script> SELECT client_ip, count(user) FROM hbase_weblogs_1 GROUP by client_ip; </script> </hive-tasklet>
Некоторые полезные команды / советы
Для запроса hadoop dfs вы можете использовать любые файловые команды Unix, такие как,
hadoop dfs -ls / hadoop dfs -mkdir /hbase
Если вы ввели безопасный режим в hadoop и он не запускается, вы можете выполнить следующую команду:
hadoop dfsadmin -safemode leave
Если вы хотите найти некоторые ошибки в файловой системе hadoop, вы можете выполнить следующую команду:
hadoop fsck /