Tuesday, 21 October 2014

Hadoop and the mystery of the version number

When I’m working with people on Hadoop I ask what you would think is a simple question. What version of Hadoop are you using? The answer normally is one of several attempts to explain what’s installed including –
AnswerTranslation
Hortonworks/ClouderaThis is my Hadoop Distribution.
Hortonworks 2I know we aren’t using version 1.
Hadoop 2I dont know my distro but I’m using Hadoop 2.
Apachesomeone else is working this. I have no idea.
In reality though it’s not as straight forward as you might think. I think the easiest way to get the most bang for your buck is to simply take a look at the version number of the package installed. So on yum based systems you could simply do
01.yum list hive\*
02.Loaded plugins:fastestmirror,priorities
03.Determining fastest mirrors
04.Installed Packages
05.hive.noarch  0.13.0.2.1.1.0-385.el6@HDP-2.1
06.hive-hcatalog.noarch0.13.0.2.1.1.0-385.el6@HDP-2.1
07.hive-jdbc.noarch0.13.0.2.1.1.0-385.el6@HDP-2.1
08.hive-webhcat.noarch  0.13.0.2.1.1.0-385.el6@HDP-2.1
09.Available Packages
10.hive-hcatalog-server.noarch  0.13.0.2.1.1.0-385.el6HDP-2.1
11.hive-metastore.noarch  0.13.0.2.1.1.0-385.el6HDP-2.1
12.hive-server.noarch0.13.0.2.1.1.0-385.el6HDP-2.1
13.hive-server2.noarch  0.13.0.2.1.1.0-385.el6HDP-2.1
14.hive-webhcat-server.noarch0.13.0.2.1.1.0-385.el6HDP-2.1
15.hivex.i6861.3.3-4.2.el6  base
16.hivex.x86_641.3.3-4.2.el6  base
17.hivex-devel.i6861.3.3-4.2.el6  base
18.hivex-devel.x86_641.3.3-4.2.el6  base
and get back of list of whats installed and whats available. You could also simply query the rpm database:
01.rpm-qa|grep hadoop
02.hadoop-2.4.0.2.1.1.0-385.el6.x86_64
03.hadoop-yarn-proxyserver-2.4.0.2.1.1.0-385.el6.x86_64
04.hadoop-hdfs-2.4.0.2.1.1.0-385.el6.x86_64
05.hadoop-yarn-2.4.0.2.1.1.0-385.el6.x86_64
06.hadoop-mapreduce-2.4.0.2.1.1.0-385.el6.x86_64
07.hadoop-yarn-resourcemanager-2.4.0.2.1.1.0-385.el6.x86_64
08.hadoop-libhdfs-2.4.0.2.1.1.0-385.el6.x86_64
09.hadoop-client-2.4.0.2.1.1.0-385.el6.x86_64
10.hadoop-mapreduce-historyserver-2.4.0.2.1.1.0-385.el6.x86_64
11.hadoop-yarn-nodemanager-2.4.0.2.1.1.0-385.el6.x86_64
12.hadoop-lzo-0.6.0-1.x86_64
13.hadoop-lzo-native-0.6.0-1.x86_64
If you run SLES you will need to do zypper and on windows look at your add/remove programs dialog on most major newer versions of windows. In the end you are still left with this cryptic string to decode. If you look closely there is a method to the madness and it helps to know this level of detail when working in an area like Hadoop where minor version numbers or a build number could make all the difference.
For example:
package name-version-architecture
hadoop-2.4.0.2.1.1.0-385-.el6.x86_64
The version number in this case is from a Hortonworks distribution so  we have a seven digit (8 places) version number.
package version-HDP Version-build number
2.4.0-2.1.1.0-build 385
It’s important to know both the version of Hadoop and the version of the package you are working on. For example if someone says “I’m working on Hive”. You really need to know what hive version AND what Hadoop version because the two are intimately linked. If someone gives you the hive package string:
1.hive-0.13.0.2.1.1.0-385.el6.noarch
It’s really not enough information for you to tell what version of Hadoop someone is using. You know they are using HDP 2.1.1.0 so one either asks for the same information on the Hadoop package installed OR goes to the release notes for the distro to decode the distribution version number into the Apache Hadoop version. Each distribution uses a different combination of packages and it pays to know EXACTLY what you are getting when you download a distro. Cloudera has exactly the same issues and their packaging may in fact be even more forthcoming in that they tell you how many patches were applied. Hortonworks does this in the context of their release notes.
package name-package version+CDH version+patches
hadoop-2.3.0+cdh5.1+384
Hopefully now you have a better understanding of Hadoop package versions.
Related Posts Plugin for WordPress, Blogger...