Hortonworks Hadoop
- Hortonworks Hadoop with Ambari - {:.} Requirements - {:.} Configuring CentOS - {:.} Default Ports - {:.} Disable Transparent Huge Pages (Optional) - {:.} Configure .bashrc - {:.} Installing Ambari - {:.} Mysql Setting - {:.} Configuring root account - {:.} On Localhost - {:.} On AWS EC2 - {:.} Setting up Ambari - {:.} Hostname Settings - {:.} On Localhost - {:.} On AWS - {:.} Start Ambari - {:.} Installing HDP on Localhost - {:.} Installing HDP on AWS
- Installing Services - {:.} Oozie - {:.} Hive
- Finish
- Removing Service
- HDP Configuration when using Public IP - {:.} JAVA_HOME Configuration - {:.} dfs.namenode.*-address - {:.} Hbase Master Bind Address - {:.} Ambari Matrix Collector
- Errors - {:.} not supported os type - {:.} mysql-connector-java Error (when installing Oozie) - {:.} Agent Hostname Not Matching - {:.} Internal Bug - {:.} Ambari Agent Error - {:.} Unable to locate package [package-name] - {:.} Oozie: Unauthorized connection for super-user - {:.} Namenode: BindException - {:.} Ambari Metrics Errors
- Remove Ambari Completely!!
Ubuntu 14.10 (trusty version) 에 Hortonworks Hadoop with Ambari를 설치하는 방법입니다.
Hortonworks Hadoop with Ambari
Requirements
- Oracle Java 1.7 or 1.8
- Metastore Database (Postgres 8.x or 9.3+, Mysql 5.6, oracle 11g r2)
데이터베이스에는 다음의 유저들이 필요합니다.
(참고로 Hive default metastore는 derby이지만, production에서는 Derby가 사용되지 않습니다. - not suppported)
그냥 mysql-server설치 하면 됩니다.
Configuring CentOS
Default Ports
Service | Name | Port | Protocol |
---|---|---|---|
Ambari | Ambari Web Interface | 8080 | HTTP |
Ambari | Handshake Port for Ambari Agents to Ambari Server | 8440 | HTTPS |
Ambari | Registration & Heartbeat Port for Ambari Agents to Ambari Server |
8441 | HTTPS |
HDFS | mapreduce.jobhistory.address | 10020 | IPC |
HDFS | mapreduce.jobhistory.admin.address | 10033 | IPC |
HDFS | mapreduce.jobhistory.webapp.address | 19888 | WEB |
NameNode | NameNode | 50070 | |
NameNode | NameNode RPC | 8020 | |
Secondary NameNode | HDFS Secondary NameNode | 50090 | |
ZooKeeper | ZooKeeper Client | 2181 |
Disable Transparent Huge Pages (Optional)
Hadoop의 Performance의 영향을 줄 수 있는 부분입니다.
일단 확인하는 방법은 다음과 같습니다.
[always] | truned on |
[never] | turned off |
disable해주기 위해서는 다음의 파일을 엽니다.
다음의 예제처럼 transparent_hugepage=never를 추가시켜줍니다.
Configure .bashrc
.bashrc에 다음과 같이 추가합니다.
Installing Ambari
Apache Ambari Installation on Ubuntu 16 링크를 참조
설치후 제대로 모두 설치됐는지 다음과 같이 확인합니다.
만약 ambari-server start를 했을때 ImportError: No module named ambari_commons.exceptions이 발생한다면 다음과 같이 합니다.
Mysql Setting
만약 MySQL 또는 MariaDB를 새로 설치했다면 Encoding 먼저 설정합니다.
(아래는 MariaDB에서 encoding설정하는 방법)
아래의 예제처럼 utf-8으로 설정을 합니다.
설정한 후에 restart 합니다.
HortonWorks Hadoop을 설정하기 위해서 먼저 MySQL Server에 접속합니다.
Configuring root account
여러모로 root로 계정으로 HDP를 설정하는것이 여러모로 이롭습니다.
만약 pulblic key를 안만들었다면 다음을 참고 합니다.
On Localhost
SSH 를 먼저 설정해줍니다.
포인트는 root계정으로 해야하며, ssh root@localhost를 했을때 에러가 없어야 합니다.
On AWS EC2
만약 EC2라면 ubuntu계정의 authorized_keys값을 root의 authorized_keys값에 넣습니다.
ssh -i private-key.pem root@localhost 을 했을때 접속이 잘되면 EC2에서도 암호를 물어보지 않고 접속이 되면 됩니다.
Setting up Ambari
- Set Up the Ambari Server 페이지 참고
root계정으로 ambari를 돌릴려면 n 을 누르고, 새로운 유저를 만들려면 y를 누릅니다.
계속 알수 없는 에러가 날 경우(MySQL접속 등등) 다음의 파일을 확인해 봅니다.
Name | Command |
---|---|
Ambari Server | sudo vi /etc/ambari-server/conf/ambari.properties |
Ambari Agent | sudo vi /etc/ambari-agent/conf/ambari-agent.ini |
Hostname Settings
On Localhost
Ambari Agent에 설정된 hostname을 확인합니다.
(아래 “anderson-desktop”은 나중에 ambari설치시에 사용되게 됩니다.)
ambari-agent.ini 파일을 열고 hostname을 변경합니다.
On AWS
/etc/hosts로 들어가서 public domain을 넣습니다.
이후 저장하고 나와서 다음의 명령어로 hostname을 변경해줍니다.
ambari-agent conf를 들어가서
ambari-agent 안의 hostname을 변경합니다.
Start Ambari
실행시킨후 http://localhost:8080로 들어가면 Ambari Webpage를 볼 수 있습니다.
기본 ID/Password는 admin/admin 입니다.
Installing HDP on Localhost
(AWS에서의 설치는 해당 부분을 skip합니다.)
[1] Cluster Name을 설정합니다.
[2] Hostname과 SSH Private Key를 등록시킵니다.
hostname 찾는것은 다음과 같습니다.
SSH Private key 찾는 것은 다음과 같습니다.
Installing HDP on AWS
이곳부터는 너무 쉬워서 tutorial도 필요없지만, 몇가지 알아야할 사항만 적는다면..
- EC2 사용시 Install Options -> Target Hosts안에 internal private DNS를 적습니다.
ex)ip-172-31-8-106.ap-northeast-1.compute.internal
또한 SSH Private Key에다가는 .pem파일을 업로드 하고, SSH User는 ubuntu로 변경해줍니다.
Installing Services
먼저 JDBC를 설치합니다.
Oozie
Derby 사용하는 서비스들에서 MySQL/PostgreSQL 로 변경해주는 것이 좋습니다.
Hive
Hive Database를 existing MySQL/ MariaDB Database 로 변경합니다.
Finish
Removing Service
Ambari를 사용중에 있다가 도중에 Service를 삭제해야할때도 있습니다. 이경우 다음과 같이 합니다.
ZEPPELIN 삭제하는 방법
HDP Configuration when using Public IP
JAVA_HOME Configuration
JAVA_HOME을 설정해주어야 합니다. (ambari-metrics-collector에서 에러가 날 수 있습니다.)
dfs.namenode.*-address
설치후 Ambari설치시 설정한 hostname으로 박혀있을텐데 이것을 0.0.0.0으로 바꿔줘야 합니다.
자세한 사항은 Namenode: BindException을 참고..
Hbase Master Bind Address
hbase-site.xml -> hbase.master.hostname (0.0.0.0) 추가
/etc/hbase/conf/regionservers 에서 regionserver의 hostname을 변경합니다.
Hbase master 그리고 regionserver 를 테스트를 위해 키고 끄는건 다음과 같이 합니다.
Ambari Matrix Collector
일단 Ambari Matrix Collector는 2가지 모드가 있습니다. (embedded, distributed) embedded의 경우는 Hbase를 직접 하나 띄워서 (기존의 Hbase말고.. Ambari Matrix Collector 가 사용할 Hbase) 여기에 저장시키고, distributed는 HDFS에다가 저장을 합니다.
Ambari -> Ambari Metrics -> Custom ams-hbase-site 에서 다음을 추가시켜줍니다.
Name | Value |
---|---|
hbase.master.hostname | 0.0.0.0 |
hbase.regionserver.hostname | 0.0.0.0 |
만약 Zookeeper안에 /ams-hbase-unsecure 라는 znode가 없으면 만들어 줍니다.
Errors
not supported os type
공식적으로 support하고 있는 OS 버젼이 아닌곳에서 설치하기 때문에 발생한 에러입니다.
(Ambari Agent를 server에 등록시 OS를 체크하게 되는데 이때 발생됨)
에러메세지는 다음과 같습니다.
/usr/lib/python2.6/site-packages/ambari_agent/Facter.py 파일을 열어서 다음과 같이 수정합니다.
pyc파일을 삭제합니다.
restart합니다.
mysql-connector-java Error (when installing Oozie)
이 부분은 Oozie설치할때 나타나는 문제인데.. 다른 버젼이 서로 충돌해서 생기는 문제입니다.
이렇게 에러가 나오면 다음과 같이 해줍니다.
우분투에서 mysql-connector-java 를 설치할때 이미 설치된 라이브러리버젼과 달라 충돌해서 생기는 에러입니다.
그냥 지우기만 하면 안되고.. Oozie설치후 mysql-connector-java가 설치되었는지 확인해 봅니다. (즉 Oozie설치되면서 대체됨)
Agent Hostname Not Matching
이경우 Agent Configuration이 잘못된 경우입니다.
아래의 hostname을 ambari 웹 컨트롤 페이지의 target hosts에서 적었던 hostname과 동일하게 맞춰줍니다.
Agent를 Restart해줍니다.
그 다음 hostname 명령어를 통해서 일치시켜줍니다.
Internal Bug
위와 같은 에러 발생시 /var/lib/ambari-agent/cache/stacks/HDP/2.0.6/hooks/before-START/scripts/params.py편집해서 158 line근처에 [0] 이 붙어있는 부분을 제거해줍니다.
다음과 같이 만들어 줍니다.
Ambari Agent Error
분명 apt-cache showpkg ambari-agent 하면 설치가 되어 있음에도 불구하고 sudo ambari-agent를 치면 없는 명령어라고 나오는 경우가 있을수 있습니다. 이 경우 manually ambari-agent를 설치해야 합니다.
Unable to locate package [package-name]
열고 deb http://public-repo-1.hortonworks.com/ambari/ubuntu14/2.x/updates/2.2.2.0 Ambari main 이런 내용이 comment out 되진 않았는지 살펴봅니다.
Oozie: Unauthorized connection for super-user
에러는 다음과 같습니다.
core-size.xml을 열은 이후 다음과 같이 변경합니다.
Oozie를 restart시키기 이전에 먼저, HDFS먼저 restart시킵니다.
Namenode: BindException
현상은 port를 사용중에 있지 않는데, 해당 Port가 사용중이라고 나오는 케이스입니다. 이 경우 NameNode Bind 시키려는 IP를 0.0.0.0으로 바꿔줘야 합니다.
Name | default value |
---|---|
fs.defaultFS | 건들지 말것 (hostname으로 둘것) |
dfs.namenode.http-address | 0.0.0.0:50070 |
dfs.namenode.https-address | 0.0.0.0:50470 |
dfs.namenode.rpc-address | 0.0.0.0:8020 |
dfs.namenode.secondary.http-address | 0.0.0.0:50090 |
HDFS default configurations 를 참조.
Ambari Metrics Errors
위의 경우는 Hbase가 안띄워져 있어서 그렇습니다.
Service | Name | default value |
---|---|---|
Ambari Metrics | hbase.zookeeper.quorum | 0.0.0.0 |
Remove Ambari Completely!!
Ambari삭제하는 방법입니다.
먼저 Ambari server와 agent의 서비스를 중단합니다.