hadoop - start - what is HiveServer and Thrift server



thrift service component in hive (1)

I just started learning Hive.There are three terms which often I seen in Hive books or Hive tutorials. Hive Server,Hive Service and Thrift Server. What is these ? how they are related ?. what is the difference ?. when each of these are used? please explain


  1. HiveServer2 (HS2) is a service that enables clients to execute queries against Hive. HiveServer2 is the successor to HiveServer1 which has been deprecated. HS2 supports multi-client concurrency and authentication. It is designed to provide better support for open API clients like JDBC and ODBC. You can find more details about hiveserver at https://cwiki.apache.org/confluence/display/Hive/HiveServer2+Overview
  2. Hive Service is nothing but daemon which runs on your client node which sends requests to Hive Server.

  3. Thrift is an RPC framework for building cross-platform services. Its stack consists of 4 layers: Server, Transport, Protocol, and Processor. You can find more details about the layers at https://thrift.apache.org/docs/concepts.

Relation between all these:

  • The Thrift-based Hive service is the core of HS2 and responsible for servicing the Hive queries (e.g., from Beeline). In simple terms Hive server is based on thrift protocols which sends queries from hive client i.e., your command line interface or from HUE interface to the underlying data which can be in your HDFS or any other data sources.

Usage:

  • When you query any hive tables or database, in background automatically your requests is transferred between hive service and hive server
  • when you want to create your own service or project you can use thrift protocols which will help you in creating layers, think this as you are creating your user defined functions using libraries, so in that case libraries will be thrift.

What is Apache Thrift: It is framework for scalable for cross-language service development.

When we can use Apache Thrift: Developing web-service that uses service developed in one language access that is in another language.

What is HiveServer : It is a service that allows a remote client to submit requests to hive. Using a variety of programming languages, and retrieve results.