小编jwe*_*gan的帖子

无法在配置单元服务器上运行UDF

我在thrift服务器模式下运行配置单元.我在jar文件中有一个UDF,我试图通过运行来使用它

add jar <path to jar>
create temporary function func_name as 'com.test.udf.UDF_CLASS'
Run Code Online (Sandbox Code Playgroud)

但是,当我运行create temporary function命令时,我收到一个错误

查询返回非零代码:9,原因:FAILED:执行错误,从org.apache.hadoop.hive.ql.exec.FunctionTask返回代码1

我已经检查了jar的名称和路径以及运行hive服务器的用户是否具有访问jar的所有正确权限.奇怪的是,如果我在CLI模式下运行配置单元并运行完全相同的命令,那么一切正常.关于为何hive CLI可能与hive thrift服务器表现不同的任何想法?

hadoop hive user-defined-functions

8
推荐指数
2
解决办法
1万
查看次数

HDFS表示文件仍处于打开状态,但写入该文件的过程已被终止

我是hadoop的新手,我花了几个小时试图谷歌这个问题,但我找不到任何有用的东西.我的问题是HDFS说文件仍然是打开的,即使写入它的过程已经很久了.这使得无法从文件中读取.

我在目录上运行了fsck,它报告一切都很健康.但是,当我运行"hadoop fsck -fs hdfs:// hadoop/logs/raw/directory_containing_file -openforwrite"时,我得到了

Status: CORRUPT
 Total size:    222506775716 B
 Total dirs:    0
 Total files:   630
 Total blocks (validated):  3642 (avg. block size 61094666 B)
  ********************************
  CORRUPT FILES:    1
  MISSING BLOCKS:   1
  MISSING SIZE:     30366208 B
  ********************************
 Minimally replicated blocks:   3641 (99.97254 %)
 Over-replicated blocks:    0 (0.0 %)
 Under-replicated blocks:   0 (0.0 %)
 Mis-replicated blocks:     0 (0.0 %)
 Default replication factor:    2
 Average block replication: 2.9991763
 Corrupt blocks:        0
 Missing replicas:      0 (0.0 %)
 Number of data-nodes: …
Run Code Online (Sandbox Code Playgroud)

hadoop hdfs

6
推荐指数
1
解决办法
2854
查看次数

在多线程Tomcat服务器中访问全局变量

编辑:我已经发现单例的构造函数被多次调用,因此看起来这些类被单独的类加载器多次加载.如何在Tomcat中创建全局单例?我一直在谷歌搜索,但到目前为止没有运气.

我有一个像我这样构造的单例对象:

private static volatile KeyMapper mapper = null;

public static KeyMapper getMapper()
{
    if(mapper == null)
    {
        synchronized(Utils.class)
        {
            if(mapper == null)
            {
                mapper = new LocalMemoryMapper();
            }
        }
    }

    return mapper;
}
Run Code Online (Sandbox Code Playgroud)

KeyMapper类基本上是HashMap的同步包装器,只有两个函数,一个用于添加映射,另一个用于删除映射.在我的32位Windows机器上运行Tomcat 6.24时,一切正常.然而,当在64位Linux机器(带有OpenJDK 1.6.0-b09的CentOS 5.4)上运行时,我添加一个映射并打印出KeyMapper使用的HashMap的大小,以验证添加的映射(即验证大小= 1).然后我尝试用另一个请求检索映射,并且我一直变为null,当我检查HashMap的大小时它是0.我确信映射不会被意外删除,因为我已经注释掉所有要删除的调用(我不使用clear或任何其他mutators,只是获取和放置).

请求通过Tomcat 6.24(配置为使用200个线程,最少4个线程)并且我将-Xnoclassgc传递给jvm以确保类不会无意中收集垃圾(jvm也在-server模式下运行).我还为KeyMapper添加了一个finalize方法,如果它被垃圾收集以确认它没有被垃圾收集,则打印到stderr.

我在我的智慧结束,我无法弄清楚为什么一分钟HashMap中的条目存在而下一个不是:(

java linux openjdk multithreading tomcat

2
推荐指数
1
解决办法
1331
查看次数

为什么连接器不使用我的Tomcat 6执行程序线程池?

我的server.xml如下所示:

<!--The connectors can use a shared executor, you can define one or more named thread pools-->
<Executor  name="tomcatThreadPool" 
           namePrefix="catalina-exec-"
           maxThreads="200" 
           minSpareThreads="4"/>

<Connector executor="tomcatThreadPool"
           port="8080" protocol="HTTP/1.1"
           connectionTimeout="10000"
           maxKeepAliveRequests="1"
           redirectPort="8443" />

<Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />
Run Code Online (Sandbox Code Playgroud)

但是,在Tomcat管理器(http:// localhost/manager/status)中,它显示如下

http-8080: Max threads: -1 Current thread count: -1 Current thread busy: -1
jk-8009: Max threads: 200 Current thread count: 4 Current thread busy: 1
Run Code Online (Sandbox Code Playgroud)

由于某种原因,它看起来像http-8080没有使用执行程序,即使它也被指示并且jk-8009正在使用执行程序,即使它没有被指示.经理只是误报或我没有正确设置线程池?

java tomcat tomcat6 server.xml

2
推荐指数
1
解决办法
1万
查看次数