Kafka Hdfs 2 Раковина не может писать на hdfs - PullRequest
0 голосов
/ 28 февраля 2020

Вот мой коннектор kafka json файл:

curl -s -k -X POST  http://cpnode.local.lan:8083/connectors -H "Content-Type: application/json" --data '{
"name":"jdbc-Hdfs2-Sink-Connector",
"config":{
"tasks.max":"1",
"batch.size":"1000",
"batch.max.rows":"1000",
"hdfs.poll.interval.ms":"500",
"connector.class":"io.confluent.connect.hdfs.HdfsSinkConnector",
"hdfs.url":"hdfs://hadoopnode.local.lan:9000",
"topics":"BookList2",
"flush.size":"1",
"confluent.topic.bootstrap.servers":"cpnode.local.lan:9092",
"confluent.topic.replication.factor":"1",
"value.converter":"io.confluent.connect.avro.AvroConverter",
"value.converter.schemas.enable":"true",
"value.converter.schema.registry.url":"http://cpnode.local.lan:8081",
"key.converter":"io.confluent.connect.avro.AvroConverter",
"key.converter.schemas.enable":"true",
"key.converter.schema.registry.url":"http://cpnode.local.lan:8081"
}
}' | jq '.'

Когда я пытаюсь использовать этот коннектор, я получаю следующую ошибку:

{
  "name": "jdbc-Hdfs2-Sink-Connector",
  "connector": {
    "state": "RUNNING",
    "worker_id": "192.168.1.153:8083"
  },
  "tasks": [
    {
      "id": 0,
      "state": "FAILED",
      "worker_id": "192.168.1.153:8083",
      "trace": "org.apache.kafka.connect.errors.ConnectException: org.apache.hadoop.security.AccessControlException: Permission denied: user=cp-user, access=WRITE, inode=\"/\":hadoop:supergroup:drwxr-xr-x

Я пробовал export HADOOP_USER_NAME=hdfs и также имел oop конфигурацию hdfs-site. xml

<property>
   <name>dfs.permissions</name>
   <value>false</value>
</property>

Но я хочу решение без ущерба для безопасности.

cp-user - это имя мой пользователь слияния платформы ... и слияния, и hdfs находятся на разных виртуальных машинах

Заранее спасибо ....

1 Ответ

0 голосов
/ 28 февраля 2020

Ваш пользователь: user = cp-user ,

Пытается access=WRITE,

К месту inode=\"/\"

Какой владелец пользователя / группы имел oop: супергруппа: drwxr-xr-x


Возможные решения (без наложения):

  1. Измените cp-user на hadoop (я предполагаю, что вы используете контейнер Docker? Если это так, обратитесь к директиве user из Docker. В противном случае export HADOOP_USER_NAME=hadoop)
  2. Создайте и добавьте учетную запись cp-user Unix в Имена узлов кластера Had oop и всех узлов данных
  3. Использование Kerberos
...