Using Apache HBase on a single server - apache

I'm new to NoSQL DBs and Apache HBase but I want to learn it.
And I was wondering if I can use HBase with just one server because what I know so far is that there are 3 modes with which HBase can run.
1. Standalone
2. Pseudo-distributed
3. Fully-distributed
so on a single server I'm only able to use standalone and pseudo-distributed but here's the problem, because I've found that these 2 modes are not supposed to be used in production environment.
The question is: Can I use Fully-distributed configuration with a single server or am I forced to buy more servers in order to run HBase in Fully-distributed production environment?
Thank you so much in advance.

A pseudo-distributed configuration is just a fully-distributed running on a single host. You can find a detailed explanation here: http://hbase.apache.org/book/standalone_dist.html
It's up to you to run it in production but It's totally discouraged, if your scale is so small perhaps you should consider simpler options that suit your needs (our good old friends RDBMS maybe?)

Related

Liferay Cloud IDE, Multiple developpers working on same liferay server

We want to start working with liferay. But the server is too heavy and the developpers computer don't have enought RAM. We want to centralize the server instance.
In other words, we want to build a development server where all developpers can connect and directly develop in their web browser, compile, view the result and push the code to git repository.
I found some good cloud IDE like eclipse CHE and a good maven archetype for liferay projet. So i can build the projet with maven. But now i want to know if it is possible to configure Liferay like every developpers can work without troubling another. And if possible, How ?
The developpers can share the same database and can use different port. Maybe, the server can generate tempory URL like some online cloud editor.
I found this post Liferay With Multiple Server Instances, but i don't think is the best way because he create one server per project. I think is too heavy.
If necessary, We have kubernetes in our IS.
Liferay's tomcat bundle, by default, is configured to take a maximum of 2.5G for the process, but it can run with far less - the default only recently was bumped up, because many people never change the default and then wonder why production systems run out of memory. For 1 concurrent user (the sole developer) on a machine, I guess that the previous default of 1G heap space is enough. Are you saying that that's too much for your developers' machines?
Having many developers on a shared server poses one problem: Yes, you may deploy different code from different machines, but: How about setting a breakpoint? Can you connect with multiple debuggers? If something fails, how do you know whos recent deployment caused the failure?
Sharing a server is an integration technique, not a development technique. If your developers don't have enough memory available for running their own Liferay server next to their IDE, it's a lot cheaper to upgrade their machines than to slow them down when everybody is accessing the same server and they can't properly debug. You pay the memory once, but your waiting developers by the hour.
Is it possible to share one server? Sure it is.
Is it possible to share one server without troubling each other? I doubt.
When you say: You think it's too heavy: What are you basing that assumption on? What does the actual developer machine look like and what keeps you from investing in the extra memory?
It's trivial to share some infrastructure - i.e. have all of them connect to the same database server (and give everyone their own schema). But just the extra effort and setup might require you to pay the developers by the hour as much as you'd otherwise pay for a couple of memory chips.
And yet another option is: Run Liferay on a remote server, but keep 1 instance per developer. This way you don't need the local memory, but can have the memory in the cloud. Calculate if you pay more for remote cloud machines than for local memory - that decision is up to you.

Redis setup for development environment

I am new to Redis & I am in process of setting up a Redis OSS for development region for my project. I have few questions about the deployment model which I want to have validated.
1) Will Redis run on just one node? since my request is for a development region I do not need high availability.
2) Can I create multiple databases to support various projects with one instance I am setting up?
3) I am going with Red Hat Linux since for production I plan to use Redis Enterprise considering its support model.
1) Yes - the redis-server always runs on one node.
2) Yes - you can multiple logical/shared databases on the same server using the SELECT command. That, however, is considered bad practice. You should, instead, use a different redis-server for each database. These redis-server processes CAN be run on the same physical server.
3) You can use the trial version of the Enterprise for development.
Disclaimer: I work for Redis Labs, home of OSS Redis and provider of the Enterprise products line.
Redis proides three development models: single(default),sentinel,cluster. Without considering the model you used, you can just start the redis instance to build a test development.
If you want to support various projects with one instance, you can create a project for one database. Redis supports at most 16 databases. Also, you need do your logical work in Redis for the aimed project with con your destination database.
Redis is a free and opensource software, so it is unnecessary for you to consider if it is an enterprise, unless you buy a customized version from RedisLabs or other software company.
Thanks all ..
On creating multiple databases per http://www.rediscookbook.org/multiple_databases.html its mentioned that we can create multiple databases.
Since this is for development/ test region, I would think creating multiple databases should be fine compared with the production where we would need best performance.
Redis is designed to be single thread which has its own pros and cons. Redis answers for multi core with sharding - https://redis.io/topics/partitioning.
Yes you can create multiple databases in same redis instance though it is not recommended. But since you are setting up staging model its your call.
Hope this helps.

Configuration Management for Installation of OS

I was looking for a uniform configuration management tool for remote installation of OS on remote servers(similar to puppet/chef) having wide range of platform support. I think we can use PXE/kickstart for remote installation. I am not sure that can be used to install OS on multiple servers in parallel? Other way to spin up the EC2 instance from AWS and pay amazon for the usage. I was wondering is there any other best option for this requirement?
Regards
Bubunia
You can consider ansible as a strong candidate for this.
Some of its features:
Open source with large development community
Number of modules which can help you building flexible solutions.
Cloud focused development modules
Ansible inventory which can help you automate things end to end on the basis of tags to your instances
Agent less
Easy to write, read and understand yaml format
Pre-builded modules for multiple installations available in open source community
Work with multiple OS
It is efficient as well I am using it from last 1 year and found it very good.
Sparrow6 cm supports quite a range of platforms/os. You can choose Sparrowdo to run configuration jobs in push manner over ssh.

Connecting to remote server with hive

So I have two machines, and I am trying to connect to the hive server with another machine. I simply enter
$hive -h<IP> -p<PORT>
However, it says I need to install hadoop. I only want to connect remotely. So why would I need hadoop? Is there any way to bypass this?
The hive program depends on the hadoop program, because it works by reading from HDFS, launching map-reduce jobs, etc. (In Hive, unlike a typical database server, the command-line interface actually does all the query processing, translating it to the underlying implementation; so you don't usually really run a "Hive server" in the way you seem to be expecting.) This doesn't mean that you need to actually install a Hadoop cluster on this machine, but you will need to install the basic software to connect to your Hadoop cluster.
One way to bypass this is run the Hive JDBC/Thrift server on the box that has the Hadoop infrastructure — that is, to run the hive program with command-line options to run it as a Hive-server on the desired port and so on — and then connect to it using your favorite JDBC-supporting SQL client. This more closely approximates the sort of database-server model of typical DBMSes (though it still differs, in that it still leaves open the possibility of other hive connections that aren't through this server). (Note: this used to be a bit tricky to set up. I'm not sure if it's easier now than it used to be.)
And this is probably obvious, but for completeness: another way to bypass this restriction is to use ssh, and actually run hive on the box that has the Hadoop infrastructure. :-)
Newer Hive CLI actually allows connecting to a remote Thrift server. See the beginning of https://cwiki.apache.org/confluence/display/Hive/LanguageManual+Cli The remote machine should be running a Hive server for this to work.
You don't need your local box to be a part of a Hadoop cluster. However, you may need Hadoop programs/jars for Hive to work. If you install Hive from a standard repository, it should include a Hadoop distribution.

Authentication between Windows and Linux servers on two hosts but same domain - possible?

We have an issue that I can't wrap my head around regarding possible solutions.
We have a site that runs off of a Dot Net Nuke CMS, with a custom asp.net CMS powering a reviews engine aspect of it too. This is hosted on a Windows server setup on SQL servers and has its own user registry.
We are looking at a script for an add on revenue offering, and the best of breed we have found happens to be Linux-based using MySQL servers. There are some other options, but none are nearly as robust as the Linux based one.
Our quandry is two-fold:
1) If we use this script, we will need to host a linux server with a different host service (ours only does windows servers). Both server sets will point to the same domain (www.mydomain.com) and have communication between the MySQL DB on the Linux machine and the SQL DB on the Windows machine.
Is this possible...and problematic? Or is this a fairly straightforward issue to solve?
2) The larger issue if the first is a hurdle that can be cleared is we would want to share our user registry between the two databases, so the user would not be logging into each DB when going between the two environments.
This issue is more complex than my understanding of authentication and databases so I'm hoping someone can help me out or at least start me in a good direction for research.
We could go with the other script routes, but they simply don't offer the functions or features of the more difficult to implement code.
OK, you can always run MySQL on the Windows box and install cgywin to run the script in a more unix type environment. Or run xampp on a different port: http://www.apachefriends.org/en/xampp.html