Я использую источник каталога спулинга, канал памяти и агент настройки приемника куста в Flume, пытаясь вставить данные в таблицу кустов. Я просматривал другие посты для поиска идей по устранению неполадок, но в итоге не смог решить проблему, то есть данные никогда не загружались в куст.
Вот мои настройки:
# flume_hivesink.conf: A single-node Flume configuration
# spooling directory source, memory channel, hive sink
# Name the components on this agent
a1.sources = s1
a1.sinks = k1
a1.channels = c1
# Describe / configure the source
a1.sources.s1.type = spooldir
a1.sources.s1.spoolDir = /opt/apps/apache-flume-1.6.0-bin/home/input
# Describe the sink
a1.sinks.k1.type = hive
a1.sinks.k1.hive.metastore = thrift://mini01:9083
a1.sinks.k1.hive.database = flume_hive
a1.sinks.k1.hive.table = student
a1.sinks.k1.serializer = DELIMITED
a1.sinks.k1.serializer.delimiter = "\t"
a1.sinks.k1.serializer.serdeSeparator = '\t'
a1.sinks.k1.serializer.fieldnames =name,age,class
# Use a channel which buffers events in memory
a1.channels.c1.type = memory
# Bind the source and sink to the channel
a1.sources.s1.channels = c1
a1.sinks.k1.channel = c1
Каталог спулинга, расположенный в пути: /opt/apps/apache-flume-1.6.0-bin/home/input
. Идея состоит в том, чтобы иметь этот каталог для мониторинга новых файлов.
Содержимое файла данных (/opt/apps/apache-flume-1.6.0-bin/home/input/abc.txt
):
jz 18 junior
ty 23 senior
sz 100 junior
Схема таблицы ученика в улье:
hive (flume_hive)> show create table student;
OK
createtab_stmt
CREATE TABLE `student`(
`name` string,
`age` int,
`class` string)
CLUSTERED BY (
age)
INTO 2 BUCKETS
ROW FORMAT DELIMITED
FIELDS TERMINATED BY '\t'
STORED AS INPUTFORMAT
'org.apache.hadoop.hive.ql.io.orc.OrcInputFormat'
OUTPUTFORMAT
'org.apache.hadoop.hive.ql.io.orc.OrcOutputFormat'
LOCATION
'hdfs://nameservice1/user/hive/warehouse/flume_hive.db/student'
TBLPROPERTIES (
'orc.compress'='NONE',
'transient_lastDdlTime'='1547726002')
Настройка файла конфигурации куста (hive-site.xml):
<property>
<name>hive.metastore.warehouse.dir</name>
<value>/user/hive/warehouse</value>
</property>
<property>
<name>hive.cli.print.header</name>
<value>true</value>
</property>
<property>
<name>hive.cli.print.current.db</name>
<value>true</value>
</property>
<property>
<name>hive.metastore.uris</name>
<value>thrift://mini01:9083</value>
</property>
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://mini03:3306/metastore?createDatabaseIfNotExist=true</value>
</property>
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>root</value>
</property>
Вот что я сделал для выполнения процессов в улье и в трубе:
1. Я запустил службу метастазов в улье в фоновом режиме с помощью команды: bin/hive --service metastore
2. Затем я запустил процесс flume_ng
с помощью команды:
flume-ng agent -c ./conf -f ./conf/flume_hivesink.conf -n a1 -Dflume.root.logger=INFO,console
Вот часть вывода, который я получил как вывод на стороне потока:
2019-01-17 23:08:25,089 (conf-file-poller-0) [INFO - org.apache.flume.node.AbstractConfigurationProvider.getConfiguration(AbstractConfigurationProvider.java:114)] Channel c1 connected to [s1, k1]
2019-01-17 23:08:25,102 (conf-file-poller-0) [INFO - org.apache.flume.node.Application.startAllComponents(Application.java:138)] Starting new configuration:{ sourceRunners:{s1=EventDrivenSourceRunner: { source:Spool Directory source s1: { spoolDir: /opt/apps/apache-flume-1.6.0-bin/home/input } }} sinkRunners:{k1=SinkRunner: { policy:org.apache.flume.sink.DefaultSinkProcessor@2034c2b2 counterGroup:{ name:null counters:{} } }} channels:{c1=org.apache.flume.channel.MemoryChannel{name: c1}} }
2019-01-17 23:08:25,134 (conf-file-poller-0) [INFO - org.apache.flume.node.Application.startAllComponents(Application.java:145)] Starting Channel c1
2019-01-17 23:08:25,340 (lifecycleSupervisor-1-0) [INFO - org.apache.flume.instrumentation.MonitoredCounterGroup.register(MonitoredCounterGroup.java:120)] Monitored counter group for type: CHANNEL, name: c1: Successfully registered new MBean.
2019-01-17 23:08:25,341 (lifecycleSupervisor-1-0) [INFO - org.apache.flume.instrumentation.MonitoredCounterGroup.start(MonitoredCounterGroup.java:96)] Component type: CHANNEL, name: c1 started
2019-01-17 23:08:25,342 (conf-file-poller-0) [INFO - org.apache.flume.node.Application.startAllComponents(Application.java:173)] Starting Sink k1
2019-01-17 23:08:25,346 (conf-file-poller-0) [INFO - org.apache.flume.node.Application.startAllComponents(Application.java:184)] Starting Source s1
2019-01-17 23:08:25,348 (lifecycleSupervisor-1-3) [INFO - org.apache.flume.source.SpoolDirectorySource.start(SpoolDirectorySource.java:78)] SpoolDirectorySource source starting with directory: /opt/apps/apache-flume-1.6.0-bin/home/input
2019-01-17 23:08:25,368 (lifecycleSupervisor-1-1) [INFO - org.apache.flume.instrumentation.MonitoredCounterGroup.register(MonitoredCounterGroup.java:120)] Monitored counter group for type: SINK, name: k1: Successfully registered new MBean.
2019-01-17 23:08:25,368 (lifecycleSupervisor-1-1) [INFO - org.apache.flume.instrumentation.MonitoredCounterGroup.start(MonitoredCounterGroup.java:96)] Component type: SINK, name: k1 started
2019-01-17 23:08:25,370 (lifecycleSupervisor-1-1) [INFO - org.apache.flume.sink.hive.HiveSink.start(HiveSink.java:502)] k1: Hive Sink k1 started
2019-01-17 23:08:25,444 (lifecycleSupervisor-1-3) [INFO - org.apache.flume.instrumentation.MonitoredCounterGroup.register(MonitoredCounterGroup.java:120)] Monitored counter group for type: SOURCE, name: s1: Successfully registered new MBean.
2019-01-17 23:08:25,444 (lifecycleSupervisor-1-3) [INFO - org.apache.flume.instrumentation.MonitoredCounterGroup.start(MonitoredCounterGroup.java:96)] Component type: SOURCE, name: s1 started
Затем процесс flume_ng
продолжал вращаться, сообщения об ошибках не выдавались. Я также снова проверил таблицу кустов student
и не получил обновленных данных в таблице, показанной ниже:
hive (flume_hive)> select * from student;
OK
student.name student.age student.class
Time taken: 1.602 seconds
Кроме того, я проверил каталог спулинга и abc.txt
был переименован, как показано ниже:
[hadoop@mini01 input]$ pwd
/opt/apps/apache-flume-1.6.0-bin/home/input
[hadoop@mini01 input]$ ls
abc.txt.COMPLETED
Наконец, я попытался изменить источник на другие (скажем, exec
, http
и т. Д.), Но все равно не смог загрузить данные в таблицу учеников улья. Есть ли что-то, что я пропустил или сделал неправильно, что приводит к неудачной загрузке данных в таблицу учеников улья?