I have an idea how we can reduce the impact this class of problem.
If we can detect that we are running in a distributed environment then in
order to use HBase you MUST have an hbase-site.xml

I'll see if I can make a proof of concept.

Niels

On Wed, Oct 25, 2017 at 11:27 AM, Till Rohrmann <trohrm...@apache.org>
wrote:

> Hi Niels,
>
> good to see that you solved your problem.
>
> I’m not entirely sure how Pig does it, but I assume that there must be
> some kind of HBase support where the HBase specific files are explicitly
> send to the cluster or that it copies the environment variables. For Flink
> supporting this kind of behaviour is not really feasible because there are
> simply too many potential projects to support out there.
>
> The Flink idiomatic way would be either to read the config on the client,
> put it in the closure of the operator and then send it in serialized form
> to the cluster. Or you set the correct environment variables to start your
> Flink job cluster with by using env.java.opts or extending the class path
> information as you did.
>
> The following code shows the closure approach.
>
> public class Main {
>   private static final Logger LOG = LoggerFactory.getLogger(Main.class);
>
>   public static void main(String[] args) throws Exception {
>     printZookeeperConfig();
>     final StreamExecutionEnvironment env = 
> StreamExecutionEnvironment.getExecutionEnvironment().setParallelism(1);
>     env.createInput(new HBaseSource(HBaseConfiguration.create())).print();
>     env.execute("HBase config problem");
>   }
>
>   public static void printZookeeperConfig() {
>     String zookeeper = 
> HBaseConfiguration.create().get("hbase.zookeeper.quorum");
>     LOG.info("----> Loading HBaseConfiguration: Zookeeper = {}", zookeeper);
>   }
>
>   public static class HBaseSource extends AbstractTableInputFormat<String> {
>
>     // HBase configuration read on the client
>     private final org.apache.hadoop.conf.Configuration hConf;
>
>     public HBaseSource(org.apache.hadoop.conf.Configuration hConf) {
>       this.hConf = Preconditions.checkNotNull(hConf);
>     }
>
>     @Override
>     public void configure(org.apache.flink.configuration.Configuration 
> parameters) {
>       table = createTable();
>       if (table != null) {
>         scan = getScanner();
>       }
>     }
>
>     private HTable createTable() {
>       printZookeeperConfig();
>
>       try {
>         return new HTable(hConf, getTableName());
>       } catch (Exception e) {
>         LOG.error("Error instantiating a new HTable instance", e);
>       }
>       return null;
>     }
>
>     @Override
>     public String getTableName() {
>       return "bugs:flink";
>     }
>
>     @Override
>     protected String mapResultToOutType(Result result) {
>       return new 
> String(result.getFamilyMap("v".getBytes(UTF_8)).get("column".getBytes(UTF_8)));
>     }
>
>     @Override
>     protected Scan getScanner() {
>       return new Scan();
>     }
>   }
> }
>
> Cheers,
> Till
> ​
>
> On Tue, Oct 24, 2017 at 11:51 AM, Niels Basjes <ni...@basjes.nl> wrote:
>
>> I changed my cluster config (on all nodes) to include the HBase config
>> dir in the classpath.
>> Now everything works as expected.
>>
>> This may very well be a misconfiguration of my cluster.
>> How ever ...
>> My current assesment:
>> Tools like Pig use the HBase config which has been specified on the LOCAL
>> machine. This allows running on a cluster and the HBase is not locally
>> defined.
>> Apparently Flink currently uses the HBase config which has been specified
>> on the REMOTE machine. This limits jobs to ONLY have the HBase that is
>> defined on the cluster.
>>
>> At this point I'm unsure which is the right approach.
>>
>> Niels Basjes
>>
>> On Tue, Oct 24, 2017 at 11:29 AM, Niels Basjes <ni...@basjes.nl> wrote:
>>
>>> Minor correction: The HBase jar files are on the classpath, just in a
>>> different order.
>>>
>>> On Tue, Oct 24, 2017 at 11:18 AM, Niels Basjes <ni...@basjes.nl> wrote:
>>>
>>>> I did some more digging.
>>>>
>>>> I added extra code to print both the environment variables and the
>>>> classpath that is used by the HBaseConfiguration to load the resource 
>>>> files.
>>>> I call this both locally and during startup of the job (i.e. these logs
>>>> arrive in the jobmanager.log on the cluster)
>>>>
>>>> Summary of that I found locally:
>>>>
>>>> Environment
>>>> 2017-10-24 08:50:15,612 INFO  com.bol.bugreports.Main
>>>>                      - HADOOP_CONF_DIR = /etc/hadoop/conf/
>>>> 2017-10-24 08:50:15,613 INFO  com.bol.bugreports.Main
>>>>                      - HBASE_CONF_DIR = /etc/hbase/conf/
>>>> 2017-10-24 08:50:15,613 INFO  com.bol.bugreports.Main
>>>>                      - FLINK_CONF_DIR = /usr/local/flink-1.3.2/conf
>>>> 2017-10-24 08:50:15,613 INFO  com.bol.bugreports.Main
>>>>                      - HIVE_CONF_DIR = /etc/hive/conf/
>>>> 2017-10-24 08:50:15,613 INFO  com.bol.bugreports.Main
>>>>                      - YARN_CONF_DIR = /etc/hadoop/conf/
>>>>
>>>> ClassPath
>>>> 2017-10-24 08:50:15,614 INFO  com.bol.bugreports.Main
>>>>                      - --> HBaseConfiguration: URLClassLoader =
>>>> sun.misc.Launcher$AppClassLoader@1b6d3586
>>>> 2017-10-24 08:50:15,614 INFO  com.bol.bugreports.Main
>>>>                      - ----> ClassPath = file:/usr/local/flink-1.3.2/li
>>>> b/flink-python_2.11-1.3.2.jar
>>>> 2017-10-24 08:50:15,614 INFO  com.bol.bugreports.Main
>>>>                      - ----> ClassPath = file:/usr/local/flink-1.3.2/li
>>>> b/flink-shaded-hadoop2-uber-1.3.2.jar
>>>> 2017-10-24 08:50:15,614 INFO  com.bol.bugreports.Main
>>>>                      - ----> ClassPath = file:/usr/local/flink-1.3.2/li
>>>> b/joda-time-2.9.1.jar
>>>> 2017-10-24 08:50:15,614 INFO  com.bol.bugreports.Main
>>>>                      - ----> ClassPath = file:/usr/local/flink-1.3.2/li
>>>> b/log4j-1.2.17.jar
>>>> 2017-10-24 08:50:15,614 INFO  com.bol.bugreports.Main
>>>>                      - ----> ClassPath = file:/usr/local/flink-1.3.2/li
>>>> b/slf4j-log4j12-1.7.7.jar
>>>> 2017-10-24 08:50:15,614 INFO  com.bol.bugreports.Main
>>>>                      - ----> ClassPath = file:/usr/local/flink-1.3.2/li
>>>> b/flink-dist_2.11-1.3.2.jar
>>>> 2017-10-24 08:50:15,614 INFO  com.bol.bugreports.Main
>>>>                      - ----> ClassPath = file:/home/nbasjes/FlinkHBaseC
>>>> onnect/
>>>> 2017-10-24 08:50:15,614 INFO  com.bol.bugreports.Main
>>>>                      - ----> ClassPath = file:/etc/hadoop/conf/
>>>> 2017-10-24 08:50:15,614 INFO  com.bol.bugreports.Main
>>>>                      - ----> ClassPath = file:/etc/hadoop/conf/
>>>> 2017-10-24 08:50:15,615 INFO  com.bol.bugreports.Main
>>>>                      - ----> ClassPath = file:/etc/hbase/conf/
>>>> 2017-10-24 08:50:15,615 INFO  com.bol.bugreports.Main
>>>>                      - ----> ClassPath = file:/usr/lib/jvm/java-1.8.0-o
>>>> penjdk-1.8.0.141-2.b16.el6_9.x86_64/lib/tools.jar
>>>> 2017-10-24 08:50:15,615 INFO  com.bol.bugreports.Main
>>>>                      - ----> ClassPath = file:/usr/hdp/2.3.4.0-3485/hba
>>>> se/
>>>> 2017-10-24 08:50:15,615 INFO  com.bol.bugreports.Main
>>>>                      - ----> ClassPath = file:/usr/hdp/2.3.4.0-3485/hba
>>>> se/lib/activation-1.1.jar
>>>> 2017-10-24 08:50:15,615 INFO  com.bol.bugreports.Main
>>>>                      - ----> ClassPath = file:/usr/hdp/2.3.4.0-3485/hba
>>>> se/lib/aopalliance-1.0.jar
>>>> 2017-10-24 08:50:15,615 INFO  com.bol.bugreports.Main
>>>>                      - ----> ClassPath = file:/usr/hdp/2.3.4.0-3485/hba
>>>> se/lib/apacheds-i18n-2.0.0-M15.jar
>>>> 2017-10-24 08:50:15,615 INFO  com.bol.bugreports.Main
>>>>                      - ----> ClassPath = file:/usr/hdp/2.3.4.0-3485/hba
>>>> se/lib/apacheds-kerberos-codec-2.0.0-M
>>>> ...
>>>>
>>>>
>>>>
>>>> On the cluster node in the jobmanager.log:
>>>>
>>>> ENVIRONMENT
>>>> 2017-10-24 10:50:19,971 INFO  com.bol.bugreports.Main                      
>>>>                  - HADOOP_CONF_DIR = 
>>>> /usr/hdp/current/hadoop-yarn-nodemanager/../hadoop/conf
>>>> 2017-10-24 10:50:19,971 INFO  com.bol.bugreports.Main                      
>>>>                  - TEZ_CONF_DIR = /etc/tez/conf
>>>> 2017-10-24 10:50:19,973 INFO  com.bol.bugreports.Main                      
>>>>                  - YARN_CONF_DIR = 
>>>> /usr/hdp/current/hadoop-yarn-nodemanager/../hadoop/conf
>>>> 2017-10-24 10:50:19,973 INFO  com.bol.bugreports.Main                      
>>>>                  - LOG_DIRS = 
>>>> /var/log/hadoop-yarn/containers/application_1503304315746_0062/container_1503304315746_0062_01_000001
>>>> 2017-10-24 10:50:19,973 INFO  com.bol.bugreports.Main                      
>>>>                  - HADOOP_YARN_HOME = /usr/hdp/2.3.4.0-3485/hadoop-yarn
>>>> 2017-10-24 10:50:19,974 INFO  com.bol.bugreports.Main                      
>>>>                  - HADOOP_HOME = /usr/hdp/2.3.4.0-3485/hadoop
>>>> 2017-10-24 10:50:19,975 INFO  com.bol.bugreports.Main                      
>>>>                  - HDP_VERSION = 2.3.4.0-3485
>>>>
>>>> And the classpath:
>>>>
>>>> 2017-10-24 10:50:19,977 INFO  com.bol.bugreports.Main                      
>>>>                  - ----> ClassPath = 
>>>> file:/var/lib/hadoop-yarn/cache/yarn/nm-local-dir/usercache/nbasjes/appcache/application_1503304315746_0062/filecache/15/flink-hbase-connect-1.0-SNAPSHOT.jar
>>>> 2017-10-24 10:50:19,977 INFO  com.bol.bugreports.Main                      
>>>>                  - ----> ClassPath = 
>>>> file:/var/lib/hadoop-yarn/cache/yarn/nm-local-dir/usercache/nbasjes/appcache/application_1503304315746_0062/filecache/13/lib/flink-dist_2.11-1.3.2.jar
>>>> 2017-10-24 10:50:19,977 INFO  com.bol.bugreports.Main                      
>>>>                  - ----> ClassPath = 
>>>> file:/var/lib/hadoop-yarn/cache/yarn/nm-local-dir/usercache/nbasjes/appcache/application_1503304315746_0062/filecache/13/lib/flink-python_2.11-1.3.2.jar
>>>> 2017-10-24 10:50:19,978 INFO  com.bol.bugreports.Main                      
>>>>                  - ----> ClassPath = 
>>>> file:/var/lib/hadoop-yarn/cache/yarn/nm-local-dir/usercache/nbasjes/appcache/application_1503304315746_0062/filecache/13/lib/flink-shaded-hadoop2-uber-1.3.2.jar
>>>> 2017-10-24 10:50:19,978 INFO  com.bol.bugreports.Main                      
>>>>                  - ----> ClassPath = 
>>>> file:/var/lib/hadoop-yarn/cache/yarn/nm-local-dir/usercache/nbasjes/appcache/application_1503304315746_0062/filecache/13/lib/joda-time-2.9.1.jar
>>>> 2017-10-24 10:50:19,978 INFO  com.bol.bugreports.Main                      
>>>>                  - ----> ClassPath = 
>>>> file:/var/lib/hadoop-yarn/cache/yarn/nm-local-dir/usercache/nbasjes/appcache/application_1503304315746_0062/filecache/13/lib/log4j-1.2.17.jar
>>>> 2017-10-24 10:50:19,978 INFO  com.bol.bugreports.Main                      
>>>>                  - ----> ClassPath = 
>>>> file:/var/lib/hadoop-yarn/cache/yarn/nm-local-dir/usercache/nbasjes/appcache/application_1503304315746_0062/filecache/13/lib/slf4j-log4j12-1.7.7.jar
>>>> 2017-10-24 10:50:19,978 INFO  com.bol.bugreports.Main                      
>>>>                  - ----> ClassPath = 
>>>> file:/var/lib/hadoop-yarn/cache/yarn/nm-local-dir/usercache/nbasjes/appcache/application_1503304315746_0062/filecache/14/log4j.properties
>>>> 2017-10-24 10:50:19,978 INFO  com.bol.bugreports.Main                      
>>>>                  - ----> ClassPath = 
>>>> file:/var/lib/hadoop-yarn/cache/yarn/nm-local-dir/usercache/nbasjes/appcache/application_1503304315746_0062/filecache/11/logback.xml
>>>> 2017-10-24 10:50:19,978 INFO  com.bol.bugreports.Main                      
>>>>                  - ----> ClassPath = 
>>>> file:/var/lib/hadoop-yarn/cache/yarn/nm-local-dir/usercache/nbasjes/appcache/application_1503304315746_0062/filecache/16/flink-dist_2.11-1.3.2.jar
>>>> 2017-10-24 10:50:19,978 INFO  com.bol.bugreports.Main                      
>>>>                  - ----> ClassPath = 
>>>> file:/var/lib/hadoop-yarn/cache/yarn/nm-local-dir/usercache/nbasjes/appcache/application_1503304315746_0062/filecache/10/flink-conf.yaml
>>>> 2017-10-24 10:50:19,978 INFO  com.bol.bugreports.Main                      
>>>>                  - ----> ClassPath = 
>>>> file:/var/lib/hadoop-yarn/cache/yarn/nm-local-dir/usercache/nbasjes/appcache/application_1503304315746_0062/container_1503304315746_0062_01_000001/
>>>> 2017-10-24 10:50:19,978 INFO  com.bol.bugreports.Main                      
>>>>                  - ----> ClassPath = file:/etc/hadoop/conf/
>>>> 2017-10-24 10:50:19,978 INFO  com.bol.bugreports.Main                      
>>>>                  - ----> ClassPath = 
>>>> file:/usr/hdp/2.3.4.0-3485/hadoop/hadoop-nfs-2.7.1.2.3.4.0-3485.jar
>>>> 2017-10-24 10:50:19,978 INFO  com.bol.bugreports.Main                      
>>>>                  - ----> ClassPath = 
>>>> file:/usr/hdp/2.3.4.0-3485/hadoop/hadoop-common-2.7.1.2.3.4.0-3485-tests.jar
>>>> 2017-10-24 10:50:19,978 INFO  com.bol.bugreports.Main                      
>>>>                  - ----> ClassPath = 
>>>> file:/usr/hdp/2.3.4.0-3485/hadoop/hadoop-common-2.7.1.2.3.4.0-3485.jar
>>>> 2017-10-24 10:50:19,978 INFO  com.bol.bugreports.Main                      
>>>>                  - ----> ClassPath = 
>>>> file:/usr/hdp/2.3.4.0-3485/hadoop/hadoop-annotations-2.7.1.2.3.4.0-3485.jar
>>>> 2017-10-24 10:50:19,978 INFO  com.bol.bugreports.Main                      
>>>>                  - ----> ClassPath = 
>>>> file:/usr/hdp/2.3.4.0-3485/hadoop/hadoop-auth-2.7.1.2.3.4.0-3485.jar
>>>> 2017-10-24 10:50:19,978 INFO  com.bol.bugreports.Main                      
>>>>                  - ----> ClassPath = 
>>>> file:/usr/hdp/2.3.4.0-3485/hadoop/hadoop-azure-2.7.1.2.3.4.0-3485.jar
>>>> 2017-10-24 10:50:19,978 INFO  com.bol.bugreports.Main                      
>>>>                  - ----> ClassPath = 
>>>> file:/usr/hdp/2.3.4.0-3485/hadoop/hadoop-aws-2.7.1.2.3.4.0-3485.jar
>>>>
>>>>
>>>> So apparently everything HBase that was specified clientside is missing
>>>> when the task is running on my cluster.
>>>>
>>>> The thing is that when running for example a Pig script I get
>>>> everything perfectly fine on this cluster as it is configured right now.
>>>> Also the config 'shouldn't' (I think) need anything different because
>>>> this application only needs the HBase client (Jar, packaged into
>>>> application) and the HBase zookeeper settings (present on the machine where
>>>> it is started).
>>>>
>>>> Niels Basjes
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> On Mon, Oct 23, 2017 at 10:23 AM, Piotr Nowojski <
>>>> pi...@data-artisans.com> wrote:
>>>>
>>>>> Till do you have some idea what is going on? I do not see any
>>>>> meaningful difference between Niels code and HBaseWriteStreamExample.java.
>>>>> There is also a very similar issue on mailing list as well: “Flink can't
>>>>> read hdfs namenode logical url”
>>>>>
>>>>> Piotrek
>>>>>
>>>>> On 22 Oct 2017, at 12:56, Niels Basjes <ni...@basjes.nl> wrote:
>>>>>
>>>>> HI,
>>>>>
>>>>> Yes, on all nodes the the same /etc/hbase/conf/hbase-site.xml that
>>>>> contains the correct settings for hbase to find zookeeper.
>>>>> That is why adding that files as an additional resource to the
>>>>> configuration works.
>>>>> I have created a very simple project that reproduces the problem on my
>>>>> setup:
>>>>> https://github.com/nielsbasjes/FlinkHBaseConnectProblem
>>>>>
>>>>> Niels Basjes
>>>>>
>>>>>
>>>>> On Fri, Oct 20, 2017 at 6:54 PM, Piotr Nowojski <
>>>>> pi...@data-artisans.com> wrote:
>>>>>
>>>>>> Is this /etc/hbase/conf/hbase-site.xml file is present on all of the
>>>>>> machines? If yes, could you share your code?
>>>>>>
>>>>>> On 20 Oct 2017, at 16:29, Niels Basjes <ni...@basjes.nl> wrote:
>>>>>>
>>>>>> I look at the logfiles from the Hadoop Yarn webinterface. I.e.
>>>>>> actually looking in the jobmanager.log of the container running the Flink
>>>>>> task.
>>>>>> That is where I was able to find these messages .
>>>>>>
>>>>>> I do the
>>>>>>  hbaseConfig.addResource(new Path("file:/etc/hbase/conf/hba
>>>>>> se-site.xml"));
>>>>>> in all places directly after the  HBaseConfiguration.create();
>>>>>> That way I simply force the task to look on the actual Hadoop node
>>>>>> for the same file it already loaded locally.
>>>>>>
>>>>>> The reason I'm suspecting Flink is because the clientside part of the
>>>>>> Flink application does have the right setting and the task/job actually
>>>>>> running in the cluster does not have the same settings.
>>>>>> So it seems in the transition into the cluster the application does
>>>>>> not copy everything it has available locally for some reason.
>>>>>>
>>>>>> There is a very high probability I did something wrong, I'm just not
>>>>>> seeing it at this moment.
>>>>>>
>>>>>> Niels
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Fri, Oct 20, 2017 at 2:53 PM, Piotr Nowojski <
>>>>>> pi...@data-artisans.com> wrote:
>>>>>>
>>>>>>> Hi,
>>>>>>>
>>>>>>> What do you mean by saying:
>>>>>>>
>>>>>>> When I open the logfiles on the Hadoop cluster I see this:
>>>>>>>
>>>>>>>
>>>>>>> The error doesn’t come from Flink? Where do you execute
>>>>>>>
>>>>>>> hbaseConfig.addResource(new Path("file:/etc/hbase/conf/hba
>>>>>>> se-site.xml"));
>>>>>>>
>>>>>>> ?
>>>>>>>
>>>>>>> To me it seems like it is a problem with misconfigured HBase and not
>>>>>>> something related to Flink.
>>>>>>>
>>>>>>> Piotrek
>>>>>>>
>>>>>>> On 20 Oct 2017, at 13:44, Niels Basjes <ni...@basjes.nl> wrote:
>>>>>>>
>>>>>>> To facilitate you guys helping me I put this test project on github:
>>>>>>> https://github.com/nielsbasjes/FlinkHBaseConnectProblem
>>>>>>>
>>>>>>> Niels Basjes
>>>>>>>
>>>>>>> On Fri, Oct 20, 2017 at 1:32 PM, Niels Basjes <ni...@basjes.nl>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Hi,
>>>>>>>>
>>>>>>>> Ik have a Flink 1.3.2 application that I want to run on a Hadoop
>>>>>>>> yarn cluster where I need to connect to HBase.
>>>>>>>>
>>>>>>>> What I have:
>>>>>>>>
>>>>>>>> In my environment:
>>>>>>>> HADOOP_CONF_DIR=/etc/hadoop/conf/
>>>>>>>> HBASE_CONF_DIR=/etc/hbase/conf/
>>>>>>>> HIVE_CONF_DIR=/etc/hive/conf/
>>>>>>>> YARN_CONF_DIR=/etc/hadoop/conf/
>>>>>>>>
>>>>>>>> In /etc/hbase/conf/hbase-site.xml I have correctly defined the
>>>>>>>> zookeeper hosts for HBase.
>>>>>>>>
>>>>>>>> My test code is this:
>>>>>>>>
>>>>>>>> public class Main {
>>>>>>>>   private static final Logger LOG = 
>>>>>>>> LoggerFactory.getLogger(Main.class);
>>>>>>>>
>>>>>>>>   public static void main(String[] args) throws Exception {
>>>>>>>>     printZookeeperConfig();
>>>>>>>>     final StreamExecutionEnvironment env = 
>>>>>>>> StreamExecutionEnvironment.getExecutionEnvironment().setParallelism(1);
>>>>>>>>     env.createInput(new HBaseSource()).print();
>>>>>>>>     env.execute("HBase config problem");
>>>>>>>>   }
>>>>>>>>
>>>>>>>>   public static void printZookeeperConfig() {
>>>>>>>>     String zookeeper = 
>>>>>>>> HBaseConfiguration.create().get("hbase.zookeeper.quorum");
>>>>>>>>     LOG.info("----> Loading HBaseConfiguration: Zookeeper = {}", 
>>>>>>>> zookeeper);
>>>>>>>>   }
>>>>>>>>
>>>>>>>>   public static class HBaseSource extends 
>>>>>>>> AbstractTableInputFormat<String> {
>>>>>>>>     @Override
>>>>>>>>     public void configure(org.apache.flink.configuration.Configuration 
>>>>>>>> parameters) {
>>>>>>>>       table = createTable();
>>>>>>>>       if (table != null) {
>>>>>>>>         scan = getScanner();
>>>>>>>>       }
>>>>>>>>     }
>>>>>>>>
>>>>>>>>     private HTable createTable() {
>>>>>>>>       LOG.info("Initializing HBaseConfiguration");
>>>>>>>>       // Uses files found in the classpath
>>>>>>>>       org.apache.hadoop.conf.Configuration hConf = 
>>>>>>>> HBaseConfiguration.create();
>>>>>>>>       printZookeeperConfig();
>>>>>>>>
>>>>>>>>       try {
>>>>>>>>         return new HTable(hConf, getTableName());
>>>>>>>>       } catch (Exception e) {
>>>>>>>>         LOG.error("Error instantiating a new HTable instance", e);
>>>>>>>>       }
>>>>>>>>       return null;
>>>>>>>>     }
>>>>>>>>
>>>>>>>>     @Override
>>>>>>>>     public String getTableName() {
>>>>>>>>       return "bugs:flink";
>>>>>>>>     }
>>>>>>>>
>>>>>>>>     @Override
>>>>>>>>     protected String mapResultToOutType(Result result) {
>>>>>>>>       return new 
>>>>>>>> String(result.getFamilyMap("v".getBytes(UTF_8)).get("column".getBytes(UTF_8)));
>>>>>>>>     }
>>>>>>>>
>>>>>>>>     @Override
>>>>>>>>     protected Scan getScanner() {
>>>>>>>>       return new Scan();
>>>>>>>>     }
>>>>>>>>   }
>>>>>>>>
>>>>>>>> }
>>>>>>>>
>>>>>>>>
>>>>>>>> I run this application with this command on my Yarn cluster (note:
>>>>>>>> first starting a yarn-cluster and then submitting the job yields the 
>>>>>>>> same
>>>>>>>> result).
>>>>>>>>
>>>>>>>> flink \
>>>>>>>>     run \
>>>>>>>>     -m yarn-cluster \
>>>>>>>>     --yarncontainer 1 \
>>>>>>>>     --yarnname "Flink on Yarn HBase problem" \
>>>>>>>>     --yarnslots                     1     \
>>>>>>>>     --yarnjobManagerMemory          4000  \
>>>>>>>>     --yarntaskManagerMemory         4000  \
>>>>>>>>     --yarnstreaming                       \
>>>>>>>>     target/flink-hbase-connect-1.0-SNAPSHOT.jar
>>>>>>>>
>>>>>>>> Now in the client side logfile 
>>>>>>>> /usr/local/flink-1.3.2/log/flink--client-80d2d21b10e0.log I see
>>>>>>>>
>>>>>>>> 1) Classpath actually contains /etc/hbase/conf/ both near the start 
>>>>>>>> and at the end.
>>>>>>>>
>>>>>>>> 2) The zookeeper settings of my experimental environent have been 
>>>>>>>> picked up by the software
>>>>>>>>
>>>>>>>> 2017-10-20 11:17:23,973 INFO  com.bol.bugreports.Main                  
>>>>>>>>                      - ----> Loading HBaseConfiguration: Zookeeper = 
>>>>>>>> node1.kluster.local.nl.bol.com:2181,node2.kluster.local.nl.bol.com:2181,node3.kluster.local.nl.bol.com:2181
>>>>>>>>
>>>>>>>>
>>>>>>>> When I open the logfiles on the Hadoop cluster I see this:
>>>>>>>>
>>>>>>>> 2017-10-20 13:17:33,250 INFO  com.bol.bugreports.Main                  
>>>>>>>>                      - ----> Loading HBaseConfiguration: Zookeeper = 
>>>>>>>> *localhost*
>>>>>>>>
>>>>>>>>
>>>>>>>> and as a consequence
>>>>>>>>
>>>>>>>> 2017-10-20 13:17:33,368 INFO  org.apache.zookeeper.ClientCnxn          
>>>>>>>>                      - Opening socket connection to server 
>>>>>>>> localhost.localdomain/127.0.0.1:2181
>>>>>>>>
>>>>>>>> 2017-10-20 13:17:33,369 WARN  org.apache.zookeeper.ClientCnxn          
>>>>>>>>                      - Session 0x0 for server null, unexpected error, 
>>>>>>>> closing socket connection and attempting reconnect
>>>>>>>>
>>>>>>>> java.net.ConnectException: Connection refused
>>>>>>>>
>>>>>>>>        at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
>>>>>>>>
>>>>>>>>        at 
>>>>>>>> sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:717)
>>>>>>>>
>>>>>>>>        at 
>>>>>>>> org.apache.zookeeper.ClientCnxnSocketNIO.doTransport(ClientCnxnSocketNIO.java:361)
>>>>>>>>
>>>>>>>>        at 
>>>>>>>> org.apache.zookeeper.ClientCnxn$SendThread.run(ClientCnxn.java:1081)
>>>>>>>>
>>>>>>>> 2017-10-20 13:17:33,475 WARN  
>>>>>>>> org.apache.hadoop.hbase.zookeeper.RecoverableZooKeeper        - 
>>>>>>>> Possibly transient ZooKeeper, quorum=localhost:2181, 
>>>>>>>> exception=org.apache.zookeeper.KeeperException$ConnectionLossException:
>>>>>>>>  KeeperErrorCode = ConnectionLoss for /hbase/hbaseid
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> The value 'localhost:2181' has been defined within the HBase jar in
>>>>>>>> the hbase-default.xml as the default value for the zookeeper nodes.
>>>>>>>>
>>>>>>>> As a workaround I currently put this extra line in my code which I
>>>>>>>> know is nasty but "works on my cluster"
>>>>>>>>
>>>>>>>> hbaseConfig.addResource(new 
>>>>>>>> Path("file:/etc/hbase/conf/hbase-site.xml"));
>>>>>>>>
>>>>>>>>
>>>>>>>> What am I doing wrong?
>>>>>>>>
>>>>>>>> What is the right way to fix this?
>>>>>>>>
>>>>>>>> --
>>>>>>>> Best regards / Met vriendelijke groeten,
>>>>>>>>
>>>>>>>> Niels Basjes
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Best regards / Met vriendelijke groeten,
>>>>>>>
>>>>>>> Niels Basjes
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Best regards / Met vriendelijke groeten,
>>>>>>
>>>>>> Niels Basjes
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Best regards / Met vriendelijke groeten,
>>>>>
>>>>> Niels Basjes
>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> Best regards / Met vriendelijke groeten,
>>>>
>>>> Niels Basjes
>>>>
>>>
>>>
>>>
>>> --
>>> Best regards / Met vriendelijke groeten,
>>>
>>> Niels Basjes
>>>
>>
>>
>>
>> --
>> Best regards / Met vriendelijke groeten,
>>
>> Niels Basjes
>>
>
>


-- 
Best regards / Met vriendelijke groeten,

Niels Basjes

Reply via email to