使用ambari的hadoop遇到的问题集合
1.虚拟机安装ambari集群的时候,不要开文件共享,它自动安装的文件有一个是在mnt/hgfs下,开了共享文件会发生位置冲突,报权限错误.[error13]2.从机上无需配置数据库,但是需要配置jdk环境和repo镜像.3.主机配置数据库的时候注意设置用户权限,任何人可以在任何机器上访问该数据库 sql语句:GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ ...
1.虚拟机安装ambari集群的时候,不要开文件共享,它自动安装的文件有一个是在mnt/hgfs下,开了共享文件会发生位置冲突,报权限错误.[error13]
2.从机上无需配置数据库,但是需要配置jdk环境和repo镜像.
3.主机配置数据库的时候注意设置用户权限,任何人可以在任何机器上访问该数据库 sql语句:GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘password’ WITH GRANT OPTION
4.如若配置域名,需要配置完整域名,如:www.weihangone.com.只配置一半访问不进去
5.ambari管理界面出现黄色问号:①集群各个从机与hosts里面的ip不匹配了②有从机的服务挂了,需要重启ambari-agent restart.保险起见主机也重启一遍ambari-server restart跟ambari-agent restart.
6.hbase跟hive会自动挂掉问题①各个机器时间不同步
7.安装hive服务的从机最好跟安装了mysql的从机是同一台,不然有时候会连接9083端口超时
8.SmartSense的Activity Analyzer一直挂掉.是因为我们没有认可的SmartSense ID,这个是官方提供的增值服务,影响不大
9.accumulo报错error=’Cannot allocate memory’ (errno=12),内存不足,可能是系统一开始分配内存出错了,也有可能本身是因为虚拟机内存不是很足够,3号机上装了数据库,内存消耗较大,重新启动ambari即可
10.hive删除分区表,但是不会删除存在hdfs上的元数据,重新增加同名分区后,数据自动会并入到表里面,切记,先用hive指令删除分区,再用hadoop指令删除hdfs下的元数据
11.yarn默认的调度模式,只开通一个队列,猜想可能是因为我最开始安装的时候nodemanage只设置了一台机导致的
12.yarn下的调度模式默认CapacityScheduler,该模式下一个节点会率先抢到job到自己手上,然后排队让job在自己这里执行,在虚拟机下的时候个人任务不多,所有job还在一个节点的承受范围内,所以会以为是只能跑一个job,换成fairScheduler模式,这个是平均调度,默认是所有job一起跑(比如先有一个job在队列a下执行,占用了百分百内存,然后又来了一个job在队列b下面,那ab各占用百分之50内存,接着b下面再进来一个job,b下面的两个job各百分之25,以此类推),但是会对系统的消耗较大.
13.千万不要改默认队列的名字,改了之后再想改回来不知道哪个组件的属性没改回来,ambari不支持全部修改回退,需要手动修改.
14.在请求较少时,好像fair跟capacity效率差不多,在调用三台从机3G的内存条件下(capacity下350万数据,流量统计40秒左右,2100万数据,流量统计110秒左右;fair下1200万数据,流量统计70秒左右),mapreduce对数据的增长反应不大,优化还是要从配置下手(1.设置调度模式,调用的资源2.设置内存块大小3.设置队列同时调用,重点搞清楚队列同时进行时对资源的调用以及占用情况)
15.yarn会根据查询内容的大小,对内存进行调度,限制其调用的内存,但是执行过程中yarn需要调用更多的内存,则会内存溢出,yarn会杀死任务,需要慎重配置内存限制
16.报错WARN monitor.ContainersMonitorImpl (ContainersMonitorImpl.java:run(516)) - Container [pid=10005,containerID=container_e33_1510653308666_0046_01_000022] is running beyond physical memory limits. Current usage: 272.3 MB of 256 MB physical memory used; 2.0 GB of 537.6 MB virtual memory used. Killing container.这是运行任务时调用的内存超出yarn的调度,他会杀死任务,调整yarn下Virtual Memory Ratio属性的大小
17.连不上hive2的2181端口,在core-site下新增对应的用户跟用户组hadoop.proxyuser.root.groups跟hadoop.proxyuser.root.hosts.
18.在ambari下的hive view界面执行hivesql报错S020 Data storage error,是因为mysql下没有生成对应表,在ambari的库下面执行CREATE TABLE DS_JOBIMPL_15 ( ds_id VARCHAR(255) NOT NULL, ds_applicationid TEXT, ds_conffile TEXT, ds_dagid TEXT, ds_dagname TEXT, ds_database TEXT, ds_datesubmitted BIGINT, ds_duration BIGINT, ds_forcedcontent TEXT, ds_globalsettings TEXT, ds_logfile TEXT, ds_owner TEXT, ds_queryfile TEXT, ds_queryid TEXT, ds_referrer TEXT, ds_sessiontag TEXT, ds_sqlstate TEXT, ds_status TEXT, ds_statusdir TEXT, ds_statusmessage TEXT, ds_title TEXT,ds_guid TEXT,ds_hiveQueryId TEXT, PRIMARY KEY (ds_id) ) 生成表即可
19.hive用tez执行job后不会关闭job,还占用队列内存,设置tez.session.am.dag.submit.timeout.secs把时间调小.默认是10分钟后关闭空间.
20.HST Agent总是自动挂掉,好像是因为python版本不对,关掉识别,修改/etc/python/cert-verification.cfg:
[https]
verify=disable
21.制做的本地源要用内网ip互通,外网互通会超时
22.如果在主机下面安装的mysql,需要导入mysql-connect-java.jar,执行命令:ambari-server setup –jdbc-db=mysql –jdbc-driver=/usr/share/java/mysql-connector-java.jar
23.hadoop集群下默认元数据(Blockreplication)会保存三份,随便分布在不同节点上(本机一份,本机架的随机另一节点一份,随机机架随机节点一份),默认回收垃圾内存(fs.trash.interval)六小时一次,为了节约内存,暂时改成只存一份
24.hivesql并没有limit start,end的用法.
25.ambari配置编辑说明不支持中文,以后一律用英文
26.测试机启动hbase的RegionServer一直挂掉,报错拒绝连接,Java HotSpot(TM) 64-Bit Server VM warning: INFO: os::commit_memory(0x00000000cc800000, 864026624, 0) failed; error=’Cannot allocate memory’ (errno=12)
应该是内存不足的原因,hbase本身是个数据库,较吃内存,测试机2.8g的运存,已经没有足够的让他稳定运行.(另外一种报错原因是各从机中时间没有同步,导致RegionServer拒绝启动)
27.启动Spark2 Thrift Server报错.Exception in thread “main” java.lang.IllegalArgumentException: Required executor memory (1024+384 MB) is above the max threshold (1024 MB) of this cluster! Please check the values of ‘yarn.scheduler.maximum-allocation-mb’ and/or ‘yarn.nodemanager.resource.memory-mb’.是spark启动内存不足,修改yarn下的对应属性增加内存
28.org.apache.hadoop.hbase.client.RetriesExhaustedException: Can’t get the locations 导致原因:1.本地导入的jar包与集群版本不一样2.设置配置属性conf.set(“hbase.zookeeper.property.clientPort”, “2181”);
conf.set(“hbase.zookeeper.quorum”, “h1.vzan.cc,h3.vzan.cc,h2.vzan.cc”);
conf.set(“hbase.rootdir”, “hdfs://h1.vzan.cc:8020/apps/hbase/data”);
29.在一台机硬盘空间不足卡死后,清理磁盘,等待重启
30.查询比较select * from (select * from linshi distribute by requesttime sort by requesttime desc limit 20) t order by requesttime desc limit 20;跟select * from linshi order by requesttime desc limit 20;有说前面的查询排序效率较高,但是现在保存的数据块只有一份,速度相差不大,等数据块多份的时候再试一下
31.hadoop fs -rmr .Trash 手动删除hadoop垃圾箱,清空hdfs占用空间
32.当某台服务器到期后,集群挂掉了,然后重启集群,发现启动到hdfs下报错,查看日志文件无果,看页面提示,应该是无法yum到主机的本地源,启动主机的http服务,问题解决
33.3月1号,一开始解决不能远程api连接不能写入的问题,开始丢失心跳,重启集群,同步心跳
然后初步认为是之前设置了用户权限问题,关闭权限认证
34.在大量数据转移的时候可以用BulkLoad转储hfile迁移到hbase里面
35.hbase读写速度优化:
1.增加集群分配给hbase的内存,分到4g.写入速度可以3000/s
2.yarn跟hbase会互相抢夺内存使用权.减少yarn的分配内存
3.对表进行分区,避免热点问题,四台速度可以达到11000/s
4.提高region处理的线程数,设置为 100
5.跳过writetowal过程,设置为false ,可以提高速度(HBase的Write Ahead Log (WAL)提供了一种高并发、持久化的日志保存与回放机制。每一个业务数据的写入操作(PUT / DELETE)执行前,都会记账在WAL中。如果出现HBase服务器宕机,则可以从WAL中回放执行之前没有完成的操作)
6.同时启动80个线程,每个put两万数据,三台机在30秒内可以完成,但是有一台机特别慢,需要一分钟才能完成(随机生成rowkey避免热点问题)
更多推荐
所有评论(0)