Каталог буферизации Flume, канал памяти и приемник куста (данные не могут быть загружены в куст) - PullRequest
0 голосов
/ 17 января 2019

Я использую источник каталога спулинга, канал памяти и агент настройки приемника куста в 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 и т. Д.), Но все равно не смог загрузить данные в таблицу учеников улья. Есть ли что-то, что я пропустил или сделал неправильно, что приводит к неудачной загрузке данных в таблицу учеников улья?

...