存档

文章标签 ‘hadoop’

HDP的sandbox使用

2017年10月11日 没有评论
  1. 下载后在virtualbox中导入ova文件。
    目前2.6.1版本是9.51G大小
    启动后:

2.默认密码:
shell账号密码:
账号:root
密码:hadoop
登录地址:http://127.0.0.1:8888,因为默认虚拟机用的nat方式,而且在网络上做过端口映射,那么可以直接在本地方位这个地址就可以连接上虚拟机里面的hdp。

登录后显示

因为hdp sandbox后续使用了docker容器,直接是没有办法修改密码等的,需要先登录到docker

登录后就立即要求修改root密码,这里修改成了abc!@#%^
修改后再登录,修改ambari的admin的密码
ambari-admin-password-reset
修改完密码后就直接登录进去了,开始自动重启启动ambari-server

然后就可以登录ambari查看各项服务和操作试用了

分类: hadoop 标签:

hdp离线安装:4.为集群新增加节点

2017年10月11日 没有评论
  • 【可选】设置节点的hostname FQDN,确保各个节点见可以通过FQDN访问
  • 【可选】如果要将HDP按照到指定目录下,需要先设置软链接,否则默认安装在/usr/hdp下:
    要安装目录:/data/app/hdp, 默认目录:/usr/hdp,软链接命令:ln -s /data/app/hdp /usr
  • 页面上点击

  • 点击左上角,弹出下拉菜单里面有add host

  • 单击后弹出新增主机向导,界面和之前的安装新集群增加节点时类似
    填入相关主机名,

  • 注意:点击Register and Confirm后会进行安装前检查,如果有警告信息需要去逐一处理(用户名存在警告可以忽略,之前提前配好的)

手动安装agent
yum -y install ambari-agent

安装好agent之后按照前面部署的时候同样修改agent的配置文件。

再往后的操作和之前安装agent及安装服务类似,区别是只需要选择要安装的服务的模块就可以了,不能修改服务配置

分类: hadoop 标签:

hdp离线安装:2.ambari安装部署 server和agent

2017年10月11日 没有评论

安装前:
每节点上获取ambari和hdp的本地的repo文件

wget -O /etc/yum.repos.d/ambari.repo http://repo.test.hadoop/repo/ambari.repo
wget -O /etc/yum.repos.d/hdp.repo http://repo.test.hadoop/repo/hdp.repo (可以暂时不需要等ambari添加节点时自动生成)

java,注意选1.7以上版本,1.7的版本有一个bug
java-1.8.0-openjdk-devel是jmap等工具
yum -y install java java-1.8.0-openjdk-devel mysql-connector-java
JAVA_HOME是bin/java的上一级路目录,openjdk使用的是/usr/lib/jvm/java/

安装ambari-server:

yum -y install mysql-connector-java
yum install ambari-server
安装完成之后,修改配置文件:
vim /etc/ambari-server/conf/ambari.properties

提前创建数据库:
create database ambari;
source /var/lib/ambari-server/resources/Ambari-DDL-MySQL-CREATE.sql;
grant all privileges on ambari.* to ambari@’127.0.0.1′ identified by ‘abc123x’;

然后sudo ambari-server setup

注意 这里JAVA_HOME设置成 /usr/lib/jvm/java, 这样后续java版本升级时java_home是不需要变动的

注意ambari连接mysql的密码不要用全数字的,python解析配置文件时会因为数据类型而出问题

到这里ambari-server就安装完成了,打开浏览器访问测试:

 

 

 

 

 

 

 

 

默认账号密码是admin,admin,登录进去后会提示安装集群:

安装ambari-agent

yum install -y ambari-agent

编辑ambari-agent的配置文件:
/etc/ambari-agent/conf/ambari-agent.ini
将以下项进行修改:

[server]
hostname=hadoop1.test.yunwei.puppet.dh

logdir=/data/logs/ambari-agent
prefix=/data/app/ambari-agent/data
cache_dir=/data/app/ambari-agent/cache
keysdir=/data/app/ambari-agent/keys

创建目录及拷贝版本号文件
sudo mkdir /data/app/ambari-agent
sudo chown ambari.hadoop /data/app/ambari-agent
sudo -u ambari mkdir -p /data/app/ambari-agent/data
sudo -u ambari mkdir -p /data/app/ambari-agent/keys
sudo -u ambari mkdir -p /data/app/ambari-agent/cache
sudo cp /var/lib/ambari-agent/data/version /data/app/ambari-agent/data/version

service ambari-agent start

 

 

 

 

 

点击Launch install Wizard开始安装新集群

分类: hadoop 标签:

hdp离线安装:1.基础环境准备

2017年10月11日 没有评论

1.系统设置

修改主机名未fqdn格式

修改/etc/sysconfig/network
最后HOSTNAME=xx.xx.xx 这种域名形式

selinux关闭,更换阿里云源,sudo权限

修改阿里云源:

yum -y install wget
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-6.repo

安装基本软件 yum install -y telnet vim sysstat bind-utils mlocate lsof libaio
关闭ipv6

selinux

查看selinux是否关闭:
/usr/sbin/sestatus -v|grep ‘SELinux status’

临时关闭无需重启:
setenforce 0
检查:
getenforce

修改配置文件需要重启永久生效
sed -i ‘s/SELINUX=enforcing/SELINUX=disabled/g’ /etc/selinux/config

设置sudo权限

修改/etc/sudoers文件,增加:
注意:各版本ambari需要的权限有差别,注意看对应版本的sudo权限

  1. # Ambari Customizable Users
  2. Cmnd_Alias AMBARI_USERS_COMMAND = /bin/su hdfs *, /bin/su ambari-qa *, /bin/su ranger *, \
  3. /bin/su zookeeper *, /bin/su knox *, /bin/su falcon *, \
  4. /bin/su ams *, /bin/su flume *, /bin/su hbase *, \
  5. /bin/su spark *, /bin/su accumulo *, /bin/su hive *, \
  6. /bin/su hcat *, /bin/su kafka *, /bin/su mapred *, \
  7. /bin/su oozie *, /bin/su sqoop *, /bin/su storm *, \
  8. /bin/su tez *, /bin/su atlas *, /bin/su yarn *, \
  9. /bin/su kms *, \
  10. /bin/ln -s /data/app/hdp /usr,\
  11. /sbin/service rpcbind *,\
  12. /sbin/service portmap *
  13. # Ambari Commands
  14. Cmnd_Alias AMBARI_COMMAND = /usr/bin/yum, /usr/bin/zypper, /usr/bin/apt-get, \
  15. /bin/mkdir, /usr/bin/test, /bin/ln, /bin/chown, \
  16. /bin/chmod, /bin/chgrp, /usr/sbin/groupadd, /usr/sbin/groupmod, \
  17. /usr/sbin/useradd, /usr/sbin/usermod, /bin/cp, \
  18. /usr/sbin/setenforce, /usr/bin/test, /usr/bin/stat, \
  19. /bin/mv, /bin/sed, /bin/rm, /bin/kill, /bin/readlink, \
  20. /usr/bin/pgrep, /bin/cat, /usr/bin/unzip, /bin/tar, \
  21. /usr/bin/tee, /bin/touch, /usr/bin/hdp-select, /usr/bin/conf-select, \
  22. /usr/hdp/current/hadoop-client/sbin/hadoop-daemon.sh, \
  23. /usr/lib/hadoop/bin/hadoop-daemon.sh, /usr/lib/hadoop/sbin/hadoop-daemon.sh, \
  24. /sbin/chkconfig gmond off, /sbin/chkconfig gmetad off, \
  25. /etc/init.d/httpd *, /sbin/service hdp-gmetad start, \
  26. /sbin/service hdp-gmond start, /usr/sbin/gmond, \
  27. /usr/sbin/update-rc.d ganglia-monitor *, /usr/sbin/update-rc.d gmetad *, \
  28. /etc/init.d/apache2 *, /usr/sbin/service hdp-gmond *, \
  29. /usr/sbin/service hdp-gmetad *, /sbin/service mysqld *, \
  30. /usr/bin/python2.6 /var/lib/ambari-agent/data/tmp/validateKnoxStatus.py *, \
  31. /usr/hdp/current/knox-server/bin/knoxcli.sh *
  32. # Ambari Ranger Commands
  33. Cmnd_Alias AMBARI_RANGER_COMMAND = /usr/hdp/*/ranger-usersync/setup.sh, \
  34. /usr/bin/ranger-usersync-stop, /usr/bin/ranger-usersync-start, \
  35. /usr/hdp/*/ranger-admin/setup.sh *, /usr/hdp/*/ranger-knox-plugin/disable-knox-plugin.sh *, \
  36. /usr/hdp/*/ranger-storm-plugin/disable-storm-plugin.sh *, \
  37. /usr/hdp/*/ranger-hbase-plugin/disable-hbase-plugin.sh *, \
  38. /usr/hdp/*/ranger-hdfs-plugin/disable-hdfs-plugin.sh *, \
  39. /usr/hdp/current/ranger-admin/ranger_credential_helper.py, \
  40. /usr/hdp/current/ranger-kms/ranger_credential_helper.py
  41. Cmnd_Alias AMBARI_SUDO_COMMAND = /bin/su - ambari,/bin/su - hive
  42. ambari ALL=(ALL) NOPASSWD:SETENV: AMBARI_USERS_COMMAND, AMBARI_COMMAND, AMBARI_RANGER_COMMAND
  43. %dba ALL=(ALL) NOPASSWD:SETENV: AMBARI_SUDO_COMMAND

2.服务

web服务、ntp、域名服务,MySQL数据库

web服务(任意web服务均可,只在主节点上安装,用来做离线本地yum源):

yum install -y httpd
chkconfig httpd on

相关源文件下载:
使用迅雷下载文件:
http://public-repo-1.hortonworks.com/HDP-UTILS-1.1.0.21/repos/centos6/HDP-UTILS-1.1.0.21-centos6.tar.gz
http://public-repo-1.hortonworks.com/HDP/centos6/2.x/updates/2.5.3.0/HDP-2.5.3.0-centos6-rpm.tar.gz
http://public-repo-1.hortonworks.com/ambari/centos6/2.x/updates/2.4.2.0/ambari-2.4.2.0-centos6.tar.gz

最终的http服务商的目录结构:
注意,baseurl一定是要到repodata 这个目录同一级

Ambari Base URL

 

 

 

 

 

 

 

 

 

 

HDP Base URL

 

 

 

 

 

 

 

 

 

 

 

HDP-UTILS Base URL

 

 

 

 

dns服务(只在主节点上安装)

这里为了简单实用dnsmasq做dns服务
yum install -y dnsmasq
chkconfig dnsmasq on

vim /etc/dnsmasq.conf
最后一行 conf-dir=/etc/dnsmasq.d
去掉注释

然后
vim /etc/dnsmasq.d/hadoop.conf 加入以下各节点的解析内容

  1. server=/hadoop/192.168.1.xx
  2. server=/test.hadoop/192.168.1.47
  3. address=/hadoop1.test.hadoop/192.168.1.47
  4. address=/hadoop2.test.hadoop/192.168.1.48
  5. address=/hadoop3.test.hadoop/192.168.1.49
  6. address=/hadoop4.test.hadoop/192.168.1.50
  7. address=/hadoop5.test.hadoop/192.168.1.51
  8. address=/master.test.hadoop/192.168.1.47
  9. address=/repo.test.hadoop/192.168.1.47
  10. address=/time.test.hadoop/192.168.1.47
  11. #反向解析记录
  12. ptr-record=47.1.168.192.in-addr.arpa,hadoop1.test.hadoop
  13. ptr-record=48.1.168.192.in-addr.arpa,hadoop2.test.hadoop
  14. ptr-record=49.1.168.192.in-addr.arpa,hadoop3.test.hadoop
  15. ptr-record=50.1.168.192.in-addr.arpa,hadoop4.test.hadoop
  16. ptr-record=51.1.168.192.in-addr.arpa,hadoop5.test.hadoop

这样需要解析的节点就在dns服务器上加好了

注意
因为需要访问外部源,所以要增加其他域名访问外部公共dns的设置
/etc/dnsmasq.conf 中增加:
server=192.168.111.1 那么没有增加解析记录的就会通过这个dns来解析了,dnsmasq做了dns缓存了

重启dns服务生效:
sudo /etc/init.d/dnsmasq restart

各节点dns解析设置

dns都修改成主节点的IP
cat  < < EOF > /etc/resolv.conf
nameserver xxxx
EOF
注:这样修改只是临时生效
永久生效修改
vim /etc/sysconfig/network-scripts/ifcfg-em1
最后dns1=192.168.1.xx
这样重启dns解析依然是生效的

ntp: (主要是hbase对各节点时间一致性要求高所有节点都安装)

主节点:
yum install -y ntp
ntpdate asia.pool.ntp.org # 注意开启时间服务器前一定要手动对时一次
hwclock -w
chkconfig –list ntpd
chkconfig ntpd on
chkconfig –list ntpd
service ntpd start

其他各节点上:
yum install -y ntp
ntpdate asia.pool.ntp.org # 注意开启时间服务器前一定要手动对时一次
hwclock -w
chkconfig –list ntpd
chkconfig ntpd on

然后各从节点修改ntp时间同步
vim /etc/ntp.conf

  1. server 0.centos.pool.ntp.org iburst
  2. server 1.centos.pool.ntp.org iburst
  3. server 2.centos.pool.ntp.org iburst
  4. server 3.centos.pool.ntp.org iburst

修改为

  1. server time.test.yunwei.puppet.dh iburst

可以直接在shell中执行:
sudo sed -i ‘s/^server /#server /g’ /etc/ntp.conf
sudo sed -i ’21aserver time.hadoop.yunwei.puppet.dh’ /etc/ntp.conf
修改后注意检查
架设的ntp时间服务器要能与上游的ntp连接上同步自己的时间并且在开启约20分钟之后才能被其他服务器用来当时间服务器同步

同时在shell中执行:
sudo bash -c “echo ‘logfile /var/log/ntpd.log’ >> /etc/ntp.conf”
重启ntp服务使之生效
service ntpd restart

3.安装MySQL数据库(只在主节点上安装,用来存储ambari的数据和hive的元数据等)

4. 系统层面性能优化:

关闭transparent_hugepage
使用root权限执行:
echo never > /sys/kernel/mm/redhat_transparent_hugepage/enabled
echo never > /sys/kernel/mm/redhat_transparent_hugepage/defrag
要开机生效需要将以上内容追加到 /etc/rc.local 里面

swap使用调整
cat /proc/sys/vm/swappiness
sysctl -w vm.swappiness=10
编辑 /etc/sysctl.conf 在最后一行增加:
vm.swappiness=10
echo vm.swappiness=10 >> /etc/sysctl.conf

参考:
http://bguncle.blog.51cto.com/3184079/957315
http://mirrors.aliyun.com/help/centos
https://docs.hortonworks.com/HDPDocuments/Ambari-2.4.2.0/bk_ambari-installation/content/obtaining_the_repositories.html
https://docs.hortonworks.com/HDPDocuments/Ambari-2.4.2.0/bk_ambari-installation/content/setting_up_a_local_repository_with_no_internet_access.html.
http://sndapk.blog.51cto.com/5385144/1336546
https://www.cloudera.com/documentation/enterprise/5-3-x/topics/cdh_admin_performance.html
http://tech.meituan.com/cpu_sys_high_in_hadoop_cluster.html
http://blog.sina.com.cn/s/blog_60aa9ccd0100h433.html
http://lsscto.blog.51cto.com/779396/762240
https://blog.rathena.cn/zai-centos-shang-shi-yong-dnsmasq-shi-xian-dns-zhuan-fa/
http://docs.hortonworks.com/HDPDocuments/Ambari-2.4.2.0/bk_ambari-security/content/commands_agent.html
http://docs.hortonworks.com/HDPDocuments/Ambari-2.4.2.0/bk_ambari-security/content/customizable_users_agent.html

 

分类: hadoop 标签:

hive中的top n的解决过程及思路

2014年6月10日 没有评论

基本思路.
有数据 : 字段 user, category, value
需求 : 取每个user的value的最大5个category

1.先按照user,value组合来排序(这里是最大值,倒序)
2.再rank相当于给每个user下的每条记录一个编号rank(user)
3.最后rank编号是N范围的就是要取的TOP N的值

SELECT *
FROM
(
SELECT *, rank(user) as row_number
FROM (
SELECT user, category, value
FROM $compTable
WHERE user is NOT NULL AND AND ctr > 0
DISTRIBUTE BY user
SORT BY user, value desc
) A
) B
WHERE row_number < 5
ORDER BY user, row_number
;

rank udf的源码

package com.example.hive.udf;
import org.apache.hadoop.hive.ql.exec.UDF;

public final class Rank extends UDF{
private int counter;
private String last_key;
public int evaluate(final String key){
if ( !key.equalsIgnoreCase(this.last_key) ) {
this.counter = 0;
this.last_key = key;
}
return this.counter++;
}
}

javac -classpath $HIVE_HOME/lib/hive-serde-1.7.jar:$HIVE_HOME/lib/hive-exec-0.10.0.jar:$HADOOP_HOME/hadoop-core-0.20.2-cdh3u5.jar -d /data/tmp/ /data/tmp/Rank.java

jar -cf /data/tmp/Rank.jar /data/tmp/Rank.classs

参考:

http://ragrawal.wordpress.com/2011/11/18/extract-top-n-records-in-each-group-in-hadoophive/
http://www.shangxueba.com/jingyan/753433.html

Technorati : ,
Del.icio.us : ,
Zooomr : ,
Flickr : ,

分类: 杂七杂八 标签: ,

hive 中内嵌变量

2014年5月31日 没有评论

hive中内嵌变量

set current_db=test_db;

use ${hiveconf:current_db};

这样就可以了,意思就是hive中的库名表名也可以用变量来替换了,这个比mysql中的灵活多了

参考:

http://dacoolbaby.iteye.com/blog/1908389

分类: 杂七杂八 标签: ,

hive中group by 提示Expression Not In Group By Key的解决办法

2014年3月5日 没有评论

hive中group by的时候

select col_1,col_2 from table_name group by col_1;

会提示:

FAILED: SemanticException [Error 10025]: Line 1:12 Expression not in GROUP BY key ‘col_2’

这里网上查了下,有两种解决方法:

1、不关心col_2的值,且有多个col_2,那么语句改成

select col_1, collect_set( col_2 )[0] from table_name group by col_1;

2、如果每个col_2的值不同且关心col_2的值,那么可以改成

select col_1,col_2 from table_name group by col_1,col_2;

http://one-line-it.blogspot.com/2012/11/hive-expression-not-in-group-by-key.html

Technorati : , ,
Del.icio.us : , ,
Zooomr : , ,
Flickr : , ,

分类: linux, 技术 标签: , ,

hive分隔符替换

2014年3月5日 没有评论

最近在使用hive,计算某些数据结果,但是hive输出的结果的分隔符很奇怪

总表面上看,好像是tab键,\t,结果用sed替换\t,替换不成功

后来网上查了资料,这里hive的分隔符是\001,但是sed ‘s/\001/,/g’,这样还是不行

后来网上看了下说这个符号是ctrl+v 和ctrl+I的组合键的结果

后来尝试了下sed ‘s/ /,/g’,结果就OK了、。、、

perl里面也可以这样替换

在python中可以使用line.split(‘\x01’)来进行切分(未验证)

参考文档:

http://blog.csdn.net/zyy160alex5/article/details/9171643

http://scn.sap.com/thread/3369277

Del.icio.us : , ,
Zooomr : , ,
Flickr : , ,
Technorati : , ,

分类: 技术 标签: , ,