HBase Error - assignment of -ROOT- failure - database

I've just installed hadoop and hbase from cloudera (3) but when I try to go to http://localhost:60010 it just sits there continually loading.
I can get to the regionserver fine - http://localhost:60030... Looking at the master hbase server logs I can see the following.
Looks like a problem with the root region.
All of this is installed on a ext4 1TB partition running Ubuntu (Natty) 11. No cluster/other boxes).
Any help would be great!
11/05/15 19:58:27 WARN master.AssignmentManager: Failed assignment of -ROOT-,,0.70236052 to serverName=localhost,60020,1305452402149, load=(requests=0, regions=0, usedHeap=24, maxHeap=995), trying to assign elsewhere instead; retry=0
org.apache.hadoop.hbase.client.RetriesExhaustedException: Failed setting up proxy interface org.apache.hadoop.hbase.ipc.HRegionInterface to /127.0.0.1:60020 after attempts=1
at org.apache.hadoop.hbase.ipc.HBaseRPC.waitForProxy(HBaseRPC.java:355)
at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getHRegionConnection(HConnectionManager.java:957)
at org.apache.hadoop.hbase.master.ServerManager.getServerConnection(ServerManager.java:606)
at org.apache.hadoop.hbase.master.ServerManager.sendRegionOpen(ServerManager.java:541)
at org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:901)
at org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:730)
at org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:710)
at org.apache.hadoop.hbase.master.AssignmentManager$TimeoutMonitor.chore(AssignmentManager.java:1605)
at org.apache.hadoop.hbase.Chore.run(Chore.java:66)
Caused by: java.net.ConnectException: Connection refused
at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:567)
at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206)
at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:408)
at org.apache.hadoop.hbase.ipc.HBaseClient$Connection.setupIOstreams(HBaseClient.java:328)
at org.apache.hadoop.hbase.ipc.HBaseClient.getConnection(HBaseClient.java:883)
at org.apache.hadoop.hbase.ipc.HBaseClient.call(HBaseClient.java:750)
at org.apache.hadoop.hbase.ipc.HBaseRPC$Invoker.invoke(HBaseRPC.java:257)
at $Proxy6.getProtocolVersion(Unknown Source)
at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:419)
at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:393)
at org.apache.hadoop.hbase.ipc.HBaseRPC.getProxy(HBaseRPC.java:444)
at org.apache.hadoop.hbase.ipc.HBaseRPC.waitForProxy(HBaseRPC.java:349)
... 8 more
11/05/15 19:58:27 WARN master.AssignmentManager: Unable to find a viable location to assign region -ROOT-,,0.70236052

Fixed this issue for anyone else who finds this. Was a problem with the host file (/etc/hosts). Need to remove entries relating to 127.0.1.1 COMPNAME - just put a hash (#) in front of this line and then restart all hadoop and hbase services.
More on the solution here: http://blog.nemccarthy.me/?p=110

As per #Manav:
If you find yourself in a situation wherein you can't edit /etc/hosts, the following >workaround will also work:
in conf/hadoop-env.sh add the following line:
export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true
I'm using Ubuntu 11.10 (Oneiric) and HBase 0.92.1. These steps fixed my issue for my single server install:
Edit the /etc/hosts: change the IP address associated with the hostname so that it uses your LAN IP instead of 127.0.0.1
Open <HBASE_DIR>/conf/hbase-env.sh
edit HBASE_OPTS, append -Djava.net.preferIPv4Stack=true. The line should look like this:
export HBASE_OPTS="-XX:+UseConcMarkSweepGC -Djava.net.preferIPv4Stack=true"
Restart HBase

If you find yourself in a situation wherein you can't edit /etc/hosts, the following
workaround will also work:
in conf/hadoop-env.sh add the following line:
export HADOOP_OPTS=-Djava.net.preferIPv4Stack=true
(removed edit, moved as a separate answer)

your hosts file should look like this
#127.0.0.1 localhost
#127.0.1.1 ubuntu.ubuntu-domain ubuntu
192.168.2.100 ubuntu
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
This file can be found in /etc/hosts
Regards
Shuja

The trick with a subinterface worked for me, but i used the loopback interface rather than eth0 because eth0 is not always available on my machine (external adapter) and i want it managed by NetworkManager (which refuses to manage eth0 if eth0.1 is defined in /etc/network/interfaces on ubuntu 13.04)
Relevant snippet:
auto lo:0
iface lo:0 inet static
address 127.0.1.1
netmask 255.255.255.0
in addition to the regular
auto lo
iface lo inet loopback
of course

Here's another work-around that Works For Me, if you're unwilling to alter /etc/hosts (since Ubuntu put that entry there for a reason).
As this post explains, the core problem is that the loopback interface has multiple IPs bound to it while hbase assumes there will be only one. The resulting mismatch causes the master to think a region server has one IP (127.0.0.1), when it's really listening on another (127.0.1.1, the IP bound to the host's declared FQDN.)
Removing the /etc/hosts entry is one way to restore the one-interface-one-IP assumption. Replacing 127.0.1.1 in /etc/hosts with a "real" permanent IP is another. Finally, another is to create a new interface: drop this in the bottom of /etc/network/interfaces:
# Bind an interface solely for the default host FQDN IP, to fix reverse dns
auto eth0.1
iface eth0.1 inet static
pre-up ip link add eth0.1 name eth0.1 type bridge
address 127.0.1.1
netmask 255.255.255.0
You should then be able to sudo ifup eth0.1 and see it in ifconfig. Restart hbase & you should be good to go.
If you happen to already be using eth0.1 the pick another slot (i.e. eth0.2), it shouldn't matter.
EDIT: #bcolyn's use of lo:0 also works for me, and is superior since loopback will always be available. In that case the pre-up line also appears unnecessary.

In your hosts file to change host address from 127.0.1.1 to 127.0.0.1

Related

Virtual Host in WSL2 not accessible from windows browser

I had setup a virtual host for the osm tile server. All the tables are made and style sheet is generated using mapnik using this tutorial:https://www.linuxbabe.com/ubuntu/openstreetmap-tile-server-ubuntu-20-04-osm
The only process I changed here is using service instead of systemctl as the latter is not supported. I have named the vhost as tile.gearmap.com in the config files. These are the files: -
/etc/apache2/sites-available/tileserver_site.conf
<VirtualHost *:80>
ServerName tile.gearmap.com
LogLevel info
Include /etc/apache2/conf-available/renderd.conf
</VirtualHost>
/etc/renderd.conf
[renderd]
stats_file=/run/renderd/renderd.stats
socketname=/run/renderd/renderd.sock
num_threads=10
tile_dir=/var/cache/renderd/tiles
[mapnik]
plugins_dir=/usr/lib/mapnik/3.1/input
font_dir=/usr/share/fonts/truetype
font_dir_recurse=true
; ADD YOUR LAYERS:
[default]
URI=/osm/
XML=/home/osm/openstreetmap-carto/style.xml
HOST=tile.gearmap.com
https://www.linuxbabe.com/ubuntu/openstreetmap-tile-server-ubuntu-20-04-osm
[Service]
User=osm
Result of Apache2 server status
I also added the third line to hosts hoping it would work:
However, when I open http://tile.gearmap.com/osm/0/0/0.png in my chrome, it shows 404 error instead of the map tile. This is all done in wsl ubuntu 20.04 and browser is in windows. Please help me find the error. If any additional files are needed to debug this, let me know.
Check if the traffic is exposed over tcp4 or tcp6 (try netstat within Ubuntu), there is a longstanding issue of WSL2 not supporting ipv6: https://github.com/microsoft/WSL/issues/4518

Ubuntu 18.04 Apache2.4.29 not able to open ports other than 80

As stated in title, I have LAMP configuration with Apache2.4.29, the problem is when I open a new port other than 80(in this case, port 12743), it could not be accessed through edge browser as port 80 does.
I added a line here under /etc/apache2/ports.conf:
appended a paragraph under /etc/apache2/sites-enabled/000-default.conf
after that I used the following command to restart Apache2:
all these shows no warning nor error messages.
The Ubuntu currently has ufw inactive, and used iptables and fail2ban instead:
however, attempts to access the website via new port failed returning the following page:
I wonder what might be the problem.
Problem solved, what I needed was just a sudo reboot.
It turned out that adding ports shall require not only an Apache2 restart but also a server reboot.

Why does my Mosquitto broker fail to start on boot, but works when started manually?

I have a UDOO x86 running Ubuntu 18.04.5 LTS, with Mosquitto v2. This setup has worked as expected until a recent Ubuntu update.
Now, Mosquitto fails to start on boot. In the Mosquitto log file I see that it correctly finds my config file, but then fails with:
Opening ipv4 listen socket on port 1883.
Error: Cannot assign requested address
It then immediately attempts to restart four more times in rapid succession before (apparently) giving up.
Strangely, if I start Mosquitto manually (using sudo systemctl start mosquitto) immediately after boot, the broker starts without error and works properly (both listeners, see below).
My mosquitto.conf:
log_type all
allow_anonymous true
listener 1883 10.11.12.222 # <-- local IP address of my machine
listener 1883 localhost
I've determined that the error is caused by the line with the IP address. If I use only localhost, or if I just use listener 1883 (which I think binds to all adapters?), mosquitto starts and works correctly.
The computer has two network adapters -- an Ethernet adapter statically assigned to 10.11.12.222, and a wireless adapter on a different subnet (using DHCP) connected to the interwebs. I'd like limit my listener to the Ethernet adapter only (and localhost), hence the desire to specify the IP address.
I've tried turning off allow_anonymous and adding a password file -- this doesn't change the behavior.

Accessing nagios 3 web interface with a Domain name

I am accessing nagios web interface with an ip x.x.x.x/nagios3 but instead I want to access it with a domain name nagios.xyz.com locally first. How can this be done? I have installed nagios 3 apache 2 on ubuntu 16.04 .
IF your Ubuntu have static IP, you can edit your local /etc/hosts file and insert this line (I suppose you are using Linux):
x.x.x.x nagios.xyz.com
Now you can open nagios.xyz.com/nagios3 with your browser and get your Nagios web interface.
PS: Anyway, this solution will work only from your PC/NTB.

Odoo POSBOX assign static IP address

I'm trying to assign a static ip address to my odoo posbox installed on a raspberry pi. I tried editing the /etc/dhcpcd.conf file by adding
interface eth0
static ip_address=192.168.0.30/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1
Also tried editing the /etc/network/interfaces file as so,
auto eth0
iface eth0 inet static
address 192.168.0.30
netmask 255.255.255.0
gateway 192.168.0.1
Both solutions worked, but whenever I reboot my pc the dhcpcd assigns a new ip address. Tried to disable this:
update-rc.d -f dhcpd remove
I am also working in POS Box but I had no problem in dynamic IP although you can refer to the following link. It might be useful because this question is already asked in odoo community.
This is odoo community link where this question has been asked.
Apart from that this link may be helpful to you too.
This link is of github document
There is a lot or problems with dynamic IPs with POSBOX.
You have to edit the IMG, for this follow this steps:
https://stefanoprenna.com/blog/2014/09/22/tutorial-how-to-mount-raw-images-img-images-on-linux/
Afterwards, when you have mounted the IMG, edit the /etc/network/interfaces file
auto eth0
iface eth0 inet static
address 192.168.0.30
netmask 255.255.255.0
gateway 192.168.0.1
Umount the IMG, then burn it as usual, good luck.

Resources