最近用到了accumulo,找了一圈没有现成的资源,于是自己装了一个。遇到了一些小坑记录一下。
1 accumulo依赖zookeeper和hadoop,zookeeper安装没什么说的,注意2181端口的配置,如果服务器上端口冲突要换一个。
2 hadoop的hdfs-site.xml文件,如果是单节点,配置如下:
<configuration>
<property>
<name>dfs.replication</name>
<value>1</value>
<name>dfs.datanode.synconclose</name>
<value>true</value>
</property>
</configuration>
第一个1是表示副本就1份,第二个true是因为accumulo关闭时有个报错: dfs.datanode.synconclose set to false in hdfs-site.xml: data loss is possible on hard system reset or power loss,查了下和hadoop这个配置有关,到底是不是不确定。
3 accumulo的配置文件有好几套模板,在/accumulo-1.10.4/conf/examples下,由于服务器很一般,选了512MB/standalone,把这个目录下文件统统cp到conf下,拷贝后再改配置文件。
accumulo-site.xml
<property>
<name>instance.volumes</name>
<value>hdfs://主机名:9100/accumulo</value>
<description>comma separated list of URIs for volumes. example: hdfs://localhost:9000/accumulo</description>
</property>
第一个坑点是上面代码里的主机名,一开始按照缺省的localhost,初始化的时候说找不到,没辙换成了主机名,主机名用hostname看。这里可能和服务器的一些配置有关系,因为zookeeper配成localhost就能找到,hadoop你在高贵什么?
<property>
<name>master.port.client</name>
<value>1999</value>
</property>
第二个坑点,9999端口被占用,这个坑很隐蔽,因为启动时不会把错误抛在控制台而是隐藏在日志中,用shell进去创建表不成功,去看日志才发现启动报错9999端口连不上,服务器上netstat一看,很好 ,被占用了,那就改呗,在启动日志里看到是master.port.client这个参数配置的9999,于是改成99990,然后依然没起来,说参数不合法,那看来就是长度问题了,改成1999好了,改端口号尽量不要加位数,谁知道里面咋写的呢?
accumulo-env.sh
这个文件中规中矩,配置好java,hadoop和zookeeper的home路径。