آموزش Hive

آموزش Hive - نصب و راه اندازی

همه ی پروژه های فرعیِ Hadoop، مثلِ Hive، Pig و HBASE از سیستم عامل لینوکس پشتیبانی می کنن. بنابراین باید یکی از انواع سیستم عامل های لینوکس را نصب کنین. برای نصب و راه اندازیِ Hive، مراحل ساده ی زیر را انجام بدین:

مرحله ی 1: بررسی نصب جاوا

باید قبل از نصبِ Hive، جاوا روی سیستم نصب باشه. با استفاده از دستور زیر بررسی کنین که جاوا روی سیستم شما نصب هست یا نه:

$ java –version

اگه جاوا روی سیستم نصب باشه پاسخی به شکل زیر دریافت خواهید کرد:

java version "1.7.0_71" 
Java(TM) SE Runtime Environment (build 1.7.0_71-b13) 
Java HotSpot(TM) Client VM (build 25.0-b02, mixed mode)

اگه جاوا روی سیستم تان نصب نبود، برای نصب جاوا مراحل زیر را انجام بدین.

نصب و راه اندازی جاوا

مرحله ی I:

با استفاده از لینکِ http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-1880260.html جاوا (JDK <latest version> - X64.tar.gz) را دانلود کنین.

به این ترتیب jdk-7u71-linux-x64.tar.gz در سیستم دانلود میشه.

مرحله ی II:

عموماً فایل جاوای دانلود شده در پوشه ی Downloads قرار میگیرن. با استفاده از دستور زیر وجود فایل را بررسی کرده و آن را از حالت فشرده خارج کنین:

$ cd Downloads/
$ ls
jdk-7u71-linux-x64.gz
$ tar zxf jdk-7u71-linux-x64.gz
$ ls
jdk1.7.0_71 jdk-7u71-linux-x64.gz

مرحله ی III:

برای این که جاوا در دسترس تمام کاربران قرار بگیره باید آن را به “/usr/local/” انتقال بدین. root را باز کرده و دستورات زیر را تایپ کنین:

$ su
password:
# mv jdk1.7.0_71 /usr/local/
# exit

مرحله ی IV:

برای تنظیم متغیرهای PATH و JAVA_HOME، دستورات زیر را به فایلِ  ~/.bashrc اضافه کنین.

export JAVA_HOME=/usr/local/jdk1.7.0_71
export PATH=$PATH:$JAVA_HOME/bin

حالا تمام تغییرات را به سیستمِ در حالِ اجرای جاری اعمال کنین.

$ source ~/.bashrc

مرحله ی V:

برای پیکربندیِ جایگزین های جاوا، از دستورات زیر استفاده کنین:

# alternatives --install /usr/bin/java java usr/local/java/bin/java 2

# alternatives --install /usr/bin/javac javac usr/local/java/bin/javac 2

# alternatives --install /usr/bin/jar jar usr/local/java/bin/jar 2

# alternatives --set java usr/local/java/bin/java

# alternatives --set javac usr/local/java/bin/javac

# alternatives --set jar usr/local/java/bin/jar

حالا همان طور که در بالا توضیح دادیم، با استفاده از دستور java –version، عملیات نصب را در ترمینال بررسی کنین.

مرحله ی 2: نصبِ Hadoop را بررسی کنین

باید قبل از نصبِ Hive، Hadoop روی سیستم نصب باشه. با استفاده از دستور زیر بررسی کنین که Hadoop روی سیستم نصب هست یا نه:

$ hadoop version

اگه Hadoop روی سیستم نصب باشه، پاسخ زیر را دریافت خواهید کرد:

Hadoop 2.4.1 Subversion https://svn.apache.org/repos/asf/hadoop/common -r 1529768 
Compiled by hortonmu on 2013-10-07T06:28Z 
Compiled with protoc 2.5.0 
From source with checksum 79e53ce7994d1628b240f09af91e1af4

اگه Hadoop روی سیستم نصب نبود، مراحل زیر را اجرا کنین:

دانلودِ Hadoop

با استفاده از دستورات زیر، Hadoop 2.4.1  را از مؤسسه ی نرم افزاریِ Apache دانلود کرده و از حالت فشرده خارج کنین.

$ su
password:
# cd /usr/local
# wget http://apache.claz.org/hadoop/common/hadoop-2.4.1/
hadoop-2.4.1.tar.gz
# tar xzf hadoop-2.4.1.tar.gz
# mv hadoop-2.4.1/* to hadoop/
# exit

نصب و راه اندازیِ Hadoop در حالت شبه توزیع شده

برای نصبِ Hadoop 2.4.1 در حالت شبه توزیع شده، از مراحل زیر پیروی کنین.

مرحله ی I: راه اندازیِ Hadoop

می توانید با اضافه کردن دستورات زیر، ، متغیرهای محیطی Hadoop را در فایلِ ~/.bashrc تنظیم کنین.

export HADOOP_HOME=/usr/local/hadoop 
export HADOOP_MAPRED_HOME=$HADOOP_HOME 
export HADOOP_COMMON_HOME=$HADOOP_HOME 
export HADOOP_HDFS_HOME=$HADOOP_HOME 
export YARN_HOME=$HADOOP_HOME
export HADOOP_COMMON_LIB_NATIVE_DIR=$HADOOP_HOME/lib/native export
PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin

حال همه ی این تغییرات را به سیستمِ در حالِ اجرایِ جاری اعمال کنین.

$ source ~/.bashrc

مرحله ی II: پیکربندیِ Hadoop

می توانید تمام فایل های پیکربندیِ Hadoop را در “$HADOOP_HOME/etc/hadoop” پیدا کنین. باید بر اساس زیرساختِ Hadoop، تغییرات مناسبی در فایل های پیکربندی ایجاد کنین.

$ cd $HADOOP_HOME/etc/hadoop

برای طراحی و توسعه ی برنامه هایِ Hadoop با جاوا، باید در  فایلِ hadoop-env.sh مقدار متغیرهای محیطی جاوا را با مقدار JAVA_HOME به همراه مکان جاوا در سیستم جایگزین کرده و آن ها را مجدداً تنظیم کنین.

export JAVA_HOME=/usr/local/jdk1.7.0_71

در ادامه لیستی از فایل هایی که باید برای پیکربندیِ Hadoop، ویرایش بشن را آورده ایم.

core-site.xml

فایلِ core-site.xml حاوی اطلاعاتی مثل شماره ی پورتی که برای نمونه ی Hadoop استفاده شده، حافظه ی تخصیص یافته به فایل سیستم، محدودیت حافظه برای ذخیره ی اطلاعات و سایز بافرهایِ خواندن/نوشتن است.

core-site.xml را باز کرده و پراپرتی های زیر را بین تگ هایِ <configuration>  و </configuration> وارد کنین.

<configuration>

   <property> 
      <name>fs.default.name</name> 
      <value>hdfs://localhost:9000</value> 
   </property>
   
</configuration>

hdfs-site.xml

hdfs-site.xml حاوی اطلاعاتی مثل مقدار داده های تکراری، مسیرِ namenode و مسیر datanode در فایل سیستم های محلی است؛ منظور مکانیِه که می خواین Hadoop infra در آن ذخیره بشه.

اطلاعات زیر را در نظر میگیریم:

dfs.replication (data replication value) = 1

(In the following path /hadoop/ is the user name.
hadoopinfra/hdfs/namenode is the directory created by hdfs file system.)

namenode path = //home/hadoop/hadoopinfra/hdfs/namenode

(hadoopinfra/hdfs/datanode is the directory created by hdfs file system.)
datanode path = //home/hadoop/hadoopinfra/hdfs/datanode

این فایل را باز کرده و پراپرتی های زیر را بین تگ هایِ <configuration>  و </configuration> وارد کنین.

<configuration>

   <property> 
      <name>dfs.replication</name> 
      <value>1</value> 
   </property> 
   <property> 
      <name>dfs.name.dir</name> 
      <value>file:///home/hadoop/hadoopinfra/hdfs/namenode </value> 
   </property> 
   <property> 
      <name>dfs.data.dir</name>
      <value>file:///home/hadoop/hadoopinfra/hdfs/datanode </value > 
   </property>
   
</configuration>

نکته: تمام مقادیر پراپرتی ها در فایل بالا توسط کاربر تعریف میشن و می توانید بر اساس زیرساختِ Hadoop، آن ها را تغییر بدین.

yarn-site.xml

جهت پیکربندیِ yarn در Hadoop از این فایل استفاده میشه. فایلِ yarn-site.xml را باز کرده و پراپرتی های زیر را بین تگ هایِ <configuration>  و </configuration> وارد کنین.

<configuration>

   <property> 
      <name>yarn.nodemanager.aux-services</name> 
      <value>mapreduce_shuffle</value> 
   </property>
   
</configuration>

mapred-site.xml

این فایل برای تعیین این که از کدام فریم روکِ MapReduce استفاده می کنیم به کار میره. Hadoop بصورت پیش فرض دارای templateای از yarn-site.xml است. ابتدا باید با استفاده از دستور زیر این فایل را از mapred-site,xml.template به فایلِ mapred-site.xml کپی کنین.

$ cp mapred-site.xml.template mapred-site.xml

فایلِ mapred-site.xml را باز کرده و پراپرتی های زیر را بین تگ هایِ <configuration>  و </configuration> وارد کنین.

<configuration>

   <property> 
      <name>mapreduce.framework.name</name> 
      <value>yarn</value> 
   </property>

</configuration>

بررسی نصبِ Hadoop

برای بررسی این که Hadoop روی سیستم تان نصب هست یا نه مراحل زیر را دنبال کنین.

مرحله ی I: راه اندازیِ Name Node

بصورت زیر، با استفاده از دستورِ “hdfs namenode -format” ، namenode را راه اندازی کنین.

$ cd ~
$ hdfs namenode -format

نتیجه باید بصورت زیر باشه:

10/24/14 21:30:55 INFO namenode.NameNode: STARTUP_MSG: 
/************************************************************ 
STARTUP_MSG: Starting NameNode 
STARTUP_MSG: host = localhost/192.168.1.11 
STARTUP_MSG: args = [-format] 
STARTUP_MSG: version = 2.4.1 
... 
... 
10/24/14 21:30:56 INFO common.Storage: Storage directory 
/home/hadoop/hadoopinfra/hdfs/namenode has been successfully formatted. 
10/24/14 21:30:56 INFO namenode.NNStorageRetentionManager: Going to 
retain 1 images with txid >= 0 
10/24/14 21:30:56 INFO util.ExitUtil: Exiting with status 0
10/24/14 21:30:56 INFO namenode.NameNode: SHUTDOWN_MSG: 
/************************************************************ 
SHUTDOWN_MSG: Shutting down NameNode at localhost/192.168.1.11
 ************************************************************/

مرحله ی II: بررسیِ Hadoop dfs

برای راه اندازی dfs، از دستور زیر استفاده کنین. با اجرای این دستور، فایل سیستمِ Hadoop راه اندازی میشه.

$ start-dfs.sh

خروجی باید به شکل زیر باشه:

10/24/14 21:37:56 
Starting namenodes on [localhost] 
localhost: starting namenode, logging to /home/hadoop/hadoop-2.4.1/logs/hadoop-hadoop-namenode-localhost.out 
localhost: starting datanode, logging to /home/hadoop/hadoop-2.4.1/logs/hadoop-hadoop-datanode-localhost.out 
Starting secondary namenodes [0.0.0.0]

مرحله ی III: بررسی اسکریپتِ Yarn

برای راه اندازی اسکریپتِ yarn از دستور زیر استفاده کنین. با اجرای این دستور، yarn daemons راه اندازی میشه.

$ start-yarn.sh

خروجی باید به شکل زیر باشه:

starting yarn daemons 
starting resourcemanager, logging to /home/hadoop/hadoop-2.4.1/logs/yarn-hadoop-resourcemanager-localhost.out 
localhost: starting nodemanager, logging to /home/hadoop/hadoop-2.4.1/logs/yarn-hadoop-nodemanager-localhost.out

مرحله ی IV: دسترسی به Hadoop در مرورگر

شماره ی پورت پیش فرض برای دسترسی به Hadoop، 50070 است. برای دریافت سرویس های Hadoop در مرورگر از دستور زیر استفاده کنین.

http://localhost:50070/

hadoop browser

مرحله ی V: بررسی تمام برنامه های کلاستِر (Cluster)

شماره ی پورت پیش فرض برای دسترسی به تمام برنامه هایِ کلاستِر، 8088 است. برای دیدن این سرویس از url زیر استفاده کنین.

http://localhost:8088/

all applications

مرحله ی 3: دانلودِ Hive

در این آموزش از hive-0.14.0 استفاده می کنیم. می توانید hive-0.14.0 را با استفاده از لینکِ  http://apache.petsads.us/hive/hive-0.14.0/ دانلود کنین. در این بخش، آرشیوِ Hive با نامِ “apache-hive-0.14.0-bin.tar.gz”  را دانلود می کنیم. برای بررسی دانلود از دستور زیر استفاده کنین:

$ cd Downloads
$ ls

در صورتی که دانلود موفقیت آمیز بوده باشد، پاسخ زیر را دریافت خواهید کرد:

apache-hive-0.14.0-bin.tar.gz

مرحله ی 4: نصب و راه اندازیِ Hive

برای نصبِ Hive روی سیستم باید مراحل زیر را انجام بدین. فرض می کنیم آرشیوِ Hive در دایرکتوریِ /Downloads دانلود شده.

بررسی و خارج کردن آرشیوِ Hive از حالت فشرده

جهت بررسی دانلود و خارج کردن آرشیوِ Hive از حالت فشرده از دستور زیر استفاده کنین:

$ tar zxvf apache-hive-0.14.0-bin.tar.gz
$ ls

درصورتی که دانلود موفقیت آمیز بوده باشد، پاسخ زیر را دریافت می کنین:

apache-hive-0.14.0-bin apache-hive-0.14.0-bin.tar.gz

کپی کردن فایل ها در دایرکتوریِ /usr/local/hive

باید فایل ها را از super user “su -” کپی کنین. برای کپی کردن فایل ها از دایرکتوری ای که از حالت فشرده خارج شده به دایرکتوریِ “/usr/local/hive”  از دستور زیر استفاده کنین.

$ su -
passwd:

# cd /home/user/Download
# mv apache-hive-0.14.0-bin /usr/local/hive
# exit

تنظیمات محیطِ  Hive

می توانید با اضافه کردن کدهای زیر به فایلِ ~/.bashrc، تنظیمات محیطِ Hive را انجام بدین:

export HIVE_HOME=/usr/local/hive
export PATH=$PATH:$HIVE_HOME/bin
export CLASSPATH=$CLASSPATH:/usr/local/Hadoop/lib/*:.
export CLASSPATH=$CLASSPATH:/usr/local/hive/lib/*:.

برای اجرای فایلِ ~/.bashrc، از دستورات زیر استفاده کنین.

$ source ~/.bashrc

مرحله ی 5: پیکربندیِ Hive

برای پیکربندیِ Hive با Hadoop، باید فایلِ hive-env.sh را که در دایرکتوریِ $HIVE_HOME/conf  قرار داره، ویرایش کنین. دستورات زیر به مسیرِ فولدرِ Hive config رفته و فایلِ template را کپی می کنن:

$ cd $HIVE_HOME/conf
$ cp hive-env.sh.template hive-env.sh

با اضافه کردن کدهای زیر، فایلِ hive-env.sh را ویرایش کنین:

export HADOOP_HOME=/usr/local/hadoop

حالا نصب و راه اندازی Hive با موفقیت انجام شده. اکنون برای پیکربندیِ metastore نیاز به یک دیتابیس سرورِ خارجی داریم. ما از پایگاه داده ی Apache Derby استفاده می کنیم.

مرحله ی 6: دانلود و نصبِ Apache Derby

برای دانلود و نصبِ Apache Derby، مراحل زیر را دنبال کنین:

دانلودِ Apache Derby

برای دانلودِ Apache Derby از دستورات زیر استفاده کنین. دانلود آن کمی زمان میبره.

$ cd ~
$ wget http://archive.apache.org/dist/db/derby/db-derby-10.4.2.0/db-derby-10.4.2.0-bin.tar.gz

برای بررسی موفقیت آمیز بودن دانلود از کد زیر استفاده کنین:

$ ls

درصورتی که دانلود موفقیت آمیز بوده باشد، پاسخی به شکل زیر دریافت می کنید:

db-derby-10.4.2.0-bin.tar.gz

بررسی و خارج کردن آرشیوِ Derby از حالت فشرده

برای بررسی و خارج کردن آرشیوِ Derby از حالت فشرده از دستورات زیر استفاده کنین:

$ tar zxvf db-derby-10.4.2.0-bin.tar.gz
$ ls

باید فایل ها را از super user “su -” کپی کنین. برای کپی کردن فایل ها از دایرکتوری ای که از حالت فشرده خارج شده به دایرکتوریِ “/usr/local/derby”  از دستور زیر استفاده کنین.

db-derby-10.4.2.0-bin db-derby-10.4.2.0-bin.tar.gz

کپی کردن فایل ها در /usr/local/derby

$ su -
passwd:
# cd /home/user
# mv db-derby-10.4.2.0-bin /usr/local/derby
# exit

تنظیمات محیطِ  derby

می توانید با اضافه کردن کدهای زیر به فایلِ ~/.bashrc، تنظیمات محیطِ derby را انجام بدین:

export DERBY_HOME=/usr/local/derby
export PATH=$PATH:$DERBY_HOME/bin
Apache Hive
18
export CLASSPATH=$CLASSPATH:$DERBY_HOME/lib/derby.jar:$DERBY_HOME/lib/derbytools.jar

برای اجرای فایلِ ~/.bashrc، از دستورات زیر استفاده کنین.

$ source ~/.bashrc

ایجاد دایرکتوری برای ذخیره ی Metastore

برای ذخیره کردن اطلاعاتِ Meatastore، یک دایرکتوری با نامِ data در دایرکتوریِ  $DERBY_HOME ایجاد کنین.

$ mkdir $DERBY_HOME/data

مرحله ی 7: پیکربندیِ Metastore مربوط به Hive

پیکربندیِ Metastore یعنی این که به Hive بگیم، پایگاه داده کجا ذخیره شده. می توانید این کار را با ویرایش فایلِ hive-site.xml که در دایرکتوریِ $HIVE_HOME/conf قرار داره انجام بدین. ابتدا با استفاده از دستور زیر فایلِ template را کپی کنین:

$ cd $HIVE_HOME/conf
$ cp hive-default.xml.template hive-site.xml

hive-site.xml را ویرایش کرده و کدهای زیر را را بین تگ هایِ <configuration>  و </configuration> وارد کنین:

<property>
   <name>javax.jdo.option.ConnectionURL</name>
   <value>jdbc:derby://localhost:1527/metastore_db;create=true </value>
   <description>JDBC connect string for a JDBC metastore </description>
</property>

فایلی به نامِ  jpox.properties ایجاد کرده و کدهای زیر را به آن اضافه کنین:

javax.jdo.PersistenceManagerFactoryClass =

org.jpox.PersistenceManagerFactoryImpl
org.jpox.autoCreateSchema = false
org.jpox.validateTables = false
org.jpox.validateColumns = false
org.jpox.validateConstraints = false
org.jpox.storeManagerType = rdbms
org.jpox.autoCreateSchema = true
org.jpox.autoStartMechanismMode = checked
org.jpox.transactionIsolation = read_committed
javax.jdo.option.DetachAllOnCommit = true
javax.jdo.option.NontransactionalRead = true
javax.jdo.option.ConnectionDriverName = org.apache.derby.jdbc.ClientDriver
javax.jdo.option.ConnectionURL = jdbc:derby://hadoop1:1527/metastore_db;create = true
javax.jdo.option.ConnectionUserName = APP
javax.jdo.option.ConnectionPassword = mine

مرحله ی 8: بررسی نصبِ Hive

قبل از اجرایِ Hive، باید فولدرِ  /tmp و یک فولدرِ Hive جداگانه در HDFS ایجاد کنین. در این قسمت از فولدرِ  /user/hive/warehouse استفاده می کنیم. باید بصورت زیر به فولدرهایی که تازه ایجاد کردین، مجوزِ نوشتن (write) بدین:

chmod g+w

قبل از بررسیِ Hive، با دستورات زیر، فولدرها را در HDFS قرار بدین:

$ $HADOOP_HOME/bin/hadoop fs -mkdir /tmp 
$ $HADOOP_HOME/bin/hadoop fs -mkdir /user/hive/warehouse
$ $HADOOP_HOME/bin/hadoop fs -chmod g+w /tmp 
$ $HADOOP_HOME/bin/hadoop fs -chmod g+w /user/hive/warehouse

با استفاده از دستور زیر موفقیت آمیز بودنِ نصبِ Hive را بررسی کنین:

$ cd $HIVE_HOME
$ bin/hive

درصورتی که Hive با موفقیت نصب شده باشه، پاسخی بصورت زیر خواهید دید:

Logging initialized using configuration in jar:file:/home/hadoop/hive-0.9.0/lib/hive-common-0.9.0.jar!/hive-log4j.properties 
Hive history file=/tmp/hadoop/hive_job_log_hadoop_201312121621_1494929084.txt
………………….
hive>

نمونه دستور زیر برای نمایش تمام جدول ها بکار میره:

hive> show tables; 
OK 
Time taken: 2.798 seconds 
hive>
در صورتی که سوال و یا نظری دارید، از بخش نظرات با ما در میان بگذارید.

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

شما چه نظر و یا سوالی درباره این نوشته دارید؟

مبحث آموزشی

آموزش Hive

Learn Hive

پرســیدن سؤال جدید

سؤال های تخصصی خود را از ما بپرسید

دنبال کردن تلگرام کانال سافت اسکیل

https://telegram.me/softskill_ir

عملیات کاربران

خبـرنــامه

Newsletters

در خبــرنـامه سافت اسکیل عضو شویــد تا جدیدترین هـای سایت را بلافاصله در ایمیل خـود دریافت کنیـد

کلیک کنید و سوالات خود را از ما بپرسید
لطفا فرم سوال را پر کنید

سوال شما با موفقیت ثبت شد. برای اینکه بتوانیم به شما اطلاع رسانی کنیم، موارد زیر را وارد کنید:

لطفا چند لحظه منتظر بمانید ...