Thanks! I don't know that.
HBaseAdmin.modifyTable method looks like overwrite the previous configuration. 
Is it correct?

In my case, I provide a service using HBase and only admin access HBase 
directly.
The reasons why I choose dynamic loading coprocessor.
 1) I don't want to meet the dependency version conflicts.
     static loading coprocessor's classloader looks like region server's 
classloader.
     But dynamic loading coprocessor's classloader and RegionServer's 
classloader is different.
     I think I can avoid dependency version conflicts using dynamic loading 
coprocessor.
     Because there are using different classloader.

 2) It is a hard task that region server rolling restart.
      Our team wants to avoid region server rolling restart.

Doesn't table coprocessor recommend in real production?
If it was not recommended, I will consider using system coprocessor.
I don't have experience using coprocessor before.
I would appreciate your help.

Best regards,
Minwoo Kang

________________________________________
보낸 사람: 张铎(Duo Zhang) <palomino...@gmail.com>
보낸 날짜: 2019년 5월 14일 화요일 17:35
받는 사람: hbase-user
제목: Re: How to reload dynamic Coprocessors

You have to call HBaseAdmin.modifyTable to trigger a region reopen.

And for me, I haven't made use of table level coprocessor in real
production, as it is a bit dangerous in a multi-tenant environment. Usually
we will add coprocessor at cluster level, through config file. So I'm not
sure why we do not provide such method... Maybe it is a bit difficult to
control the uploading part?

Kang Minwoo <minwoo.k...@outlook.com> 于2019年5月14日周二 下午3:41写道:

> Thank you for your reply.
>
> I tried to update the table descriptor using set
> HTableDescriptor#setValue(byte[], byte[]).
> the table descriptor changed sucessfully.
> But the region doesn't reopen. so new jar didn't apply.
>
> Why don't we provide a coprocessor jar file update method for users?
> Is it not a good idea?
>
> Best regards,
> Minwoo Kang
>
> ________________________________________
> 보낸 사람: 张铎(Duo Zhang) <palomino...@gmail.com>
> 보낸 날짜: 2019년 5월 14일 화요일 11:44
> 받는 사람: hbase-user
> 제목: Re: How to reload dynamic Coprocessors
>
> I think the safest way is to disable the table first, then update the
> coprocessor jar in place, and then enable the table.
>
> Or another way is to upload the coprocessor jar to another place, and
> update the table descriptor to point to the new place. I think this could
> be done by code, as you can completely replace the old coprocessor config.
> Not sure if this is easy to do through shell.
>
> Kang Minwoo <minwoo.k...@outlook.com> 于2019年5月14日周二 上午10:36写道:
>
> > Hello Users,
> >
> > When I load a dynamic coprocessor, If the table already has the same
> class
> > coprocessor, coprocessor fails to load.
> > Because the same class coprocessor cannot load.
> >
> > So I should unload old version coprocessor before load new version
> > coprocessor.
> > But coprocessor has a mission-critical task. So the table always loads
> the
> > coprocessor.
> >
> > Here is a problem.
> > If I should update coprocessor jar file, I think I cannot update
> > coprocessor jar file before coprocessor unload.
> >
> > If I can use a reload command, It is great for me.
> > Does there have a reload command?
> >
> > (HBase version: 1.2.9)
> >
> > Best regards,
> > Minwoo Kang
>

Reply via email to