{"id":854,"date":"2019-02-11T10:43:58","date_gmt":"2019-02-11T01:43:58","guid":{"rendered":"https:\/\/dong1lkim.oboki.net\/?p=854"},"modified":"2019-09-01T22:23:32","modified_gmt":"2019-09-01T13:23:32","slug":"hadoop-hue-%ec%84%a4%ec%b9%98","status":"publish","type":"post","link":"https:\/\/oboki.net\/workspace\/data-engineering\/hadoop\/hadoop-hue-%ec%84%a4%ec%b9%98\/","title":{"rendered":"[Hadoop] Hue \uc124\uce58"},"content":{"rendered":"<h1>Hue \uc124\uce58<\/h1>\n<blockquote><p>\n  Hue(Hadoop User Experience)\ub97c \uc774\uc6a9\ud558\uba74 \ub2e4\uc591\ud55c Apache Hadoop \uc5d0\ucf54\uc2dc\uc2a4\ud15c\uc744 Web Interface\ub85c \uc811\uadfc\ud560 \uc218 \uc788\ub2e4.\n<\/p><\/blockquote>\n<h2>\uc758\uc874\uc131<\/h2>\n<h3>\ud328\ud0a4\uc9c0<\/h3>\n<pre><code class=\"bash\">yum -y install python2-devel sqlite-devel libxml2-devel libxslt-devel libffi-devel openssl-devel openldap-devel gmp-devel execvp-devel gcc gcc-c++\n<\/code><\/pre>\n<h3>MySQL<\/h3>\n<p>django\uc758 Repository DB\ub85c mysql\uc744 \uc0ac\uc6a9\ud55c\ub2e4. hue\ub97c \ucef4\ud30c\uc77c\ud560 \ub54c mysqld_config \uba85\ub839\ub3c4 \ud544\uc694\ud558\ubbc0\ub85c \uba3c\uc800 \uc124\uce58\ud574\ub194\uc57c \ud55c\ub2e4.<br \/>\n\ucc38\uace0 : <a href=\"https:\/\/oboki.net\/workspace\/database\/mysql\/mysql-mysql-%EC%84%A4%EC%B9%98\/\">mysql \uc124\uce58<\/a><\/p>\n<p>\ubbf8\ub9ac \uc124\uce58\ub41c mysql \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc544\ub798\uc640 \uac19\uc740 \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc640 \uc0ac\uc6a9\uc790\ub97c \uc0dd\uc131\ud574\uc11c \uc774\uc6a9\ud55c\ub2e4.<\/p>\n<pre><code class=\"sql\">create database hue;\ncreate user hue@localhost identified by 'hue'\ngrant all privileges on hue.* to hue@localhost;\n<\/code><\/pre>\n<h3>Hadoop<\/h3>\n<p>Hue \uac00 \uc811\uc18d\ud558\ub294 Hadoop\uc5d0 \ub2e4\uc74c\uacfc \uac19\uc774 \uc124\uc815\ud558\uace0 \uc7ac\uae30\ub3d9\ud55c\ub2e4.<\/p>\n<p><code>vi core-site.xml<\/code><\/p>\n<pre><code class=\"xml\">&lt;property&gt;\n  &lt;name&gt;hadoop.proxyuser.root.groups&lt;\/name&gt;\n  &lt;value&gt;*&lt;\/value&gt;\n&lt;\/property&gt;\n&lt;property&gt;\n  &lt;name&gt;hadoop.proxyuser.root.hosts&lt;\/name&gt;\n  &lt;value&gt;*&lt;\/value&gt;\n&lt;\/property&gt;\n<\/code><\/pre>\n<p><code>vi hdfs-site.xml<\/code><\/p>\n<pre><code class=\"xml\">&lt;property&gt;\n    &lt;name&gt;dfs.webhdfs.enabled&lt;\/name&gt;\n    &lt;value&gt;true&lt;\/value&gt;\n&lt;\/property&gt;\n<\/code><\/pre>\n<h2>Hue \uc124\uce58<\/h2>\n<h3>hue \uc2dc\uc2a4\ud15c \uc720\uc800 profile<\/h3>\n<pre><code class=\"bash\"># Hue\nexport LD_LIBRARY_PATH=\/app\/mysql\/lib:$LD_LIBRARY_PATH\nexport PATH=\/app\/mysql\/bin:\/app\/hue\/build\/env\/bin:$PATH\n<\/code><\/pre>\n<h3>\ubc14\uc774\ub108\ub9ac \ub2e4\uc6b4\ub85c\ub4dc \ubc0f \uc124\uce58<\/h3>\n<h4>\ubc14\uc774\ub108\ub9ac \ub2e4\uc6b4\ub85c\ub4dc<\/h4>\n<p><a href=\"http:\/\/gethue.com\/hue-4-2-and-its-self-service-bi-improvements-are-out\/\"><a href=\"http:\/\/gethue.com\/hue-4-2-and-its-self-service-bi-improvements-are-out\/\">http:\/\/gethue.com\/hue-4-2-and-its-self-service-bi-improvements-are-out\/<\/a><\/a> URL\uc5d0\uc11c \ub2e4\uc6b4\ub85c\ub4dc\ud558\uc5ec \uc124\uce58 \ub300\uc0c1 \uc11c\ubc84\uc5d0 \uc5c5\ub85c\ub4dc<\/p>\n<h4>\uc555\ucd95\ud574\uc81c \ubc0f \ucef4\ud30c\uc77c<\/h4>\n<pre><code class=\"bash\">tar -xvzf hue-4.2.0.tgz\ncd hue-4.2.0\nexport PREFIX=\/app\nmake\nmake install\n<\/code><\/pre>\n<h3>Hue \uc124\uc815 \ud30c\uc77c \uc218\uc815<\/h3>\n<p><code>vi \/app\/hue\/desktop\/conf\/hue.ini<\/code><\/p>\n<pre><code class=\"conf\">[beeswax]\n  hive_server_host=node4.dat\n  hive_server_port=10000\n  hive_conf_dir=\/app\/hive\/conf\n  max_number_of_sessions=10\n<\/code><\/pre>\n<h3>\uae30\ub3d9 \ubc0f \uc885\ub8cc \uc2a4\ud06c\ub9bd\ud2b8 \uc791\uc131<\/h3>\n<p><code>cd \/app\/hue\/build\/env\/bin<\/code><\/p>\n<h4>\uc2e4\ud589 \uc2a4\ud06c\ub9bd\ud2b8<\/h4>\n<p><code>vi start-hue.sh<\/code><\/p>\n<pre><code class=\"bash\">\/app\/hue\/build\/env\/bin\/supervisor --daemon --pid-file=\/app\/hue\/build\/env\/bin\/hue_pid\n<\/code><\/pre>\n<h4>\uc885\ub8cc \uc2a4\ud06c\ub9bd\ud2b8<\/h4>\n<p><code>vi stop-hue.sh<\/code><\/p>\n<pre><code class=\"bash\">HUE_PID=<code>cat \/app\/hue\/build\/env\/bin\/hue_pid<\/code>\nkill $HUE_PID\n<\/code><\/pre>\n<p><code>chmod +x start-hue.sh stop-hue.sh<\/code><\/p>\n<h3>Start<\/h3>\n<p><code>start-hue.sh<\/code><\/p>\n<h3>Stop<\/h3>\n<p><code>stop-hue.sh<\/code><\/p>\n<h2>Connect Hue to MySQL<\/h2>\n<p>hue \uac00 \uc2e4\ud589\ub41c \uc0c1\ud0dc\uc5d0\uc11c \uae30\uc874\uc5d0 sqlite\uc5d0 \uc800\uc7a5\ub41c \uba54\ud0c0\ub370\uc774\ud130\ub97c \ubc31\uc5c5\ubc1b\ub294\ub2e4.<\/p>\n<pre><code class=\"bash\">hue dumpdata &gt; hue_init_schema.json\n<\/code><\/pre>\n<p>dump \ud30c\uc77c\uc5d0\uc11c \ub2e4\uc74c \ubd80\ubd84(useradmin.userprofile\uc774 \ud3ec\ud568\ub41c \ud544\ub4dc)\uc744 \uc81c\uac70\ud55c\ub2e4.<\/p>\n<p><code>vi hue_init_schema.json<\/code><\/p>\n<pre><code class=\"json\">...,\n{\"pk\": 1, \"model\": \"useradmin.userprofile\", \"fields\": {\"last_activity\": \"2019-02-10T16:30:34.059\", \"creation_method\": \"HUE\", \"first_login\": false, \"user\": 1, \"home_directory\": \"\/user\/admin\"}},\n..\n<\/code><\/pre>\n<p><code>hue.ini<\/code> \uc758 \ub2e4\uc74c \ubd80\ubd84\uc744 \uc218\uc815\ud558\uace0 \uc7ac\uae30\ub3d9<\/p>\n<h3>AS-IS<\/h3>\n<pre><code class=\"ini\">  [[database]]\n    # Database engine is typically one of:\n    # postgresql_psycopg2, mysql, sqlite3 or oracle.\n    #\n    # Note that for sqlite3, 'name', below is a path to the filename. For other backends, it is the database name\n    # Note for Oracle, options={\"threaded\":true} must be set in order to avoid crashes.\n    # Note for Oracle, you can use the Oracle Service Name by setting \"host=\" and \"port=\" and then \"name=&lt;host&gt;:&lt;port&gt;\/&lt;service_name&gt;\".\n    # Note for MariaDB use the 'mysql' engine.\n    ## engine=sqlite3\n    ## host=\n    ## port=\n    ## user=\n    ## password=\n    # conn_max_age option to make database connection persistent value in seconds\n    # https:\/\/docs.djangoproject.com\/en\/1.9\/ref\/databases\/#persistent-connections\n    ## conn_max_age=0\n    # Execute this script to produce the database password. This will be used when 'password' is not set.\n    ## password_script=\/path\/script\n    ## name=desktop\/desktop.db\n    ## options={}\n    # Database schema, to be used only when public schema is revoked in postgres\n    ## schema=public\n<\/code><\/pre>\n<h3>TO-BE<\/h3>\n<pre><code class=\"ini\">  [[database]]\n    engine=mysql\n    host=127.0.0.1\n    port=3306\n    user=hue\n    password=hue\n    name=hue\n<\/code><\/pre>\n<p>\uc544\ub798 \uba85\ub839\uc73c\ub85c hue\ub97c \uc7ac\uc2e4\ud589\ud55c\ub2e4.<\/p>\n<p><code>stop-hue.sh; start-hue.sh<\/code><\/p>\n<p>\uc774\uc5b4\uc11c mysql \ub370\uc774\ud130\ubca0\uc774\uc2a4 sync \uc791\uc5c5<\/p>\n<pre><code class=\"bash\">hue syncdb --noinput\nhue migrate\nmysql -u hue -D hue -p\n<\/code><\/pre>\n<p>\uc544\ub798 \ucffc\ub9ac\ub97c \uc218\ud589\ud55c \ub4a4 \ub098\uc624\ub294 DDL\uc5d0\uc11c Foreign key\uc758 \uc774\ub984\uc744 \ucc3e\uc544\ub0b4\uace0 \ud574\ub2f9 \ud0a4\ub97c \uc81c\uac70\ud55c\ub2e4.<\/p>\n<pre><code class=\"sql\">mysql&gt; SHOW CREATE TABLE auth_permission;\n+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n| Table           | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   |\n+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n| auth_permission | CREATE TABLE <code>auth_permission<\/code> (\n  <code>id<\/code> int(11) NOT NULL AUTO_INCREMENT,\n  <code>name<\/code> varchar(50) NOT NULL,\n  <code>content_type_id<\/code> int(11) NOT NULL,\n  <code>codename<\/code> varchar(100) NOT NULL,\n  PRIMARY KEY (<code>id<\/code>),\n  UNIQUE KEY <code>content_type_id<\/code> (<code>content_type_id<\/code>,<code>codename<\/code>),\n  KEY <code>auth_permission_37ef4eb4<\/code> (<code>content_type_id<\/code>),\n  CONSTRAINT <code>content_type_id_refs_id_d043b34a<\/code> FOREIGN KEY (<code>content_type_id<\/code>) REFERENCES <code>django_content_type<\/code> (<code>id<\/code>)\n) ENGINE=InnoDB AUTO_INCREMENT=229 DEFAULT CHARSET=latin1 |\n+-----------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+\n1 row in set (0.00 sec)\n<\/code><\/pre>\n<p>\ucc3e\uc544\ub0b8 foreign key\ub97c \uc81c\uac70\ud558\uace0 django_content_type \ud14c\uc774\ube14\uc758 \ub370\uc774\ud130\ub3c4 \uc81c\uac70\ud55c\ub2e4.<\/p>\n<pre><code class=\"sql\">ALTER TABLE auth_permission DROP FOREIGN KEY content_type_id_refs_id_d043b34a;\nDELETE FROM hue.django_content_type;\n<\/code><\/pre>\n<p>\ubc31\uc5c5\ubc1b\uc544\ub450\uc5c8\ub358 \ub370\uc774\ud130\ub97c \ub85c\ub4dc\ud55c\ub2e4.<\/p>\n<pre><code class=\"bash\">hue loaddata hue_init_schema.json\n<\/code><\/pre>\n<p>foreign key \ub2e4\uc2dc \uc0dd\uc131\ud558\uba74 \ub05d.<\/p>\n<pre><code class=\"sql\">ALTER TABLE auth_permission ADD FOREIGN KEY (<code>content_type_id<\/code>) REFERENCES <code>django_content_type<\/code> (<code>id<\/code>);\n<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Hue \uc124\uce58 Hue(Hadoop User Experience)\ub97c \uc774\uc6a9\ud558\uba74 \ub2e4\uc591\ud55c Apache Hadoop \uc5d0\ucf54\uc2dc\uc2a4\ud15c\uc744 Web Interface\ub85c \uc811\uadfc\ud560 \uc218 \uc788\ub2e4. \uc758\uc874\uc131 \ud328\ud0a4\uc9c0 yum -y install python2-devel sqlite-devel libxml2-devel libxslt-devel libffi-devel openssl-devel openldap-devel gmp-devel execvp-devel gcc gcc-c++ MySQL django\uc758 Repository DB\ub85c mysql\uc744 \uc0ac\uc6a9\ud55c\ub2e4. hue\ub97c \ucef4\ud30c\uc77c\ud560 \ub54c mysqld_config \uba85\ub839\ub3c4 \ud544\uc694\ud558\ubbc0\ub85c \uba3c\uc800 \uc124\uce58\ud574\ub194\uc57c \ud55c\ub2e4. \ucc38\uace0 : mysql \uc124\uce58 \ubbf8\ub9ac \uc124\uce58\ub41c mysql \ub370\uc774\ud130\ubca0\uc774\uc2a4\uc5d0 \uc544\ub798\uc640 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[71],"tags":[98,100,50],"class_list":["post-854","post","type-post","status-publish","format-standard","hentry","category-hadoop","tag-hadoop","tag-hue","tag-50"],"_links":{"self":[{"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/posts\/854","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/comments?post=854"}],"version-history":[{"count":2,"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/posts\/854\/revisions"}],"predecessor-version":[{"id":1354,"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/posts\/854\/revisions\/1354"}],"wp:attachment":[{"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/media?parent=854"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/categories?post=854"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/oboki.net\/workspace\/wp-json\/wp\/v2\/tags?post=854"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}