CDH6.0擴容異常分析

一、問題重現

1.在CDH6.0中,點擊“主機”->“所有主機”->“向羣集添加新主機”,會出現異常如下:

 

出現異常如下:

 

 

2.查看具體的日誌報錯如下:

2018-11-21 20:45:00,262 INFO avro-servlet-hb-processor-1:com.cloudera.server.common.AgentAvroServlet: (43 skipped) AgentAvroServlet: heartbeat processing stats: average=8ms, min=6ms, max=37ms.
2018-11-21 20:46:00,299 INFO avro-servlet-hb-processor-1:com.cloudera.server.common.AgentAvroServlet: (43 skipped) AgentAvroServlet: heartbeat processing stats: average=8ms, min=6ms, max=37ms.
2018-11-21 20:47:00,347 INFO avro-servlet-hb-processor-1:com.cloudera.server.common.AgentAvroServlet: (43 skipped) AgentAvroServlet: heartbeat processing stats: average=8ms, min=6ms, max=26ms.
2018-11-21 20:47:11,513 INFO scm-web-3396:com.cloudera.server.web.common.ExceptionReport: Exception report generated accessing http://54.169.8.88:7180/cmf/add-hosts-wizard/wizard
org.springframework.web.bind.MissingServletRequestParameterException: Required Long parameter 'clusterId' is not present
        at org.springframework.web.method.annotation.RequestParamMethodArgumentResolver.handleMissingValue(RequestParamMethodArgumentResolver.java:198)
        at org.springframework.web.method.annotation.AbstractNamedValueMethodArgumentResolver.resolveArgument(AbstractNamedValueMethodArgumentResolver.java:109)
        at org.springframework.web.method.support.HandlerMethodArgumentResolverComposite.resolveArgument(HandlerMethodArgumentResolverComposite.java:121)
        at org.springframework.web.method.support.InvocableHandlerMethod.getMethodArgumentValues(InvocableHandlerMethod.java:158)
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:128)
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:97)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:827)
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:738)
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:85)
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:967)
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:901)
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:970)
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:861)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:687)
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:846)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:790)
        at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:841)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1650)
        at com.jamonapi.http.JAMonServletFilter.doFilter(JAMonServletFilter.java:48)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)
        at com.cloudera.enterprise.JavaMelodyFacade$MonitoringFilter.doFilter(JavaMelodyFacade.java:200)
        at org.eclipse.jetty.servlet.ServletHandler$CachedChain.doFilter(ServletHandler.java:1637)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:317)
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127)
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
        at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:115)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)
        at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137)
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:331)

二、問題解決

 

1.根據報錯顯示網頁請求拿不到clusterId,我們先去數據庫裏找到集羣的id

[root@ip-172-31-6-83 cloudera-scm-server]# mysql -u root -p
Enter password: 
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 2691
Server version: 5.5.56-MariaDB MariaDB Server

Copyright (c) 2000, 2017, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> show databases;
+--------------------+
| Database           |
+--------------------+
| information_schema |
| am                 |
| cm                 |
| hue                |
| metastore          |
| mysql              |
| nav_as             |
| nav_ms             |
| oozie              |
| performance_schema |
| rm                 |
| sentry             |
+--------------------+
12 rows in set (0.00 sec)
MariaDB [cm]> select * from CLUSTERS;
+------------+---------+-------------------+-------------------------+-------------+--------------+--------------------------------------+
| CLUSTER_ID | NAME    | MAINTENANCE_COUNT | OPTIMISTIC_LOCK_VERSION | CDH_VERSION | DISPLAY_NAME | UUID                                 |
+------------+---------+-------------------+-------------------------+-------------+--------------+--------------------------------------+
|          1 | cluster |                 0 |                       6 | CDH 6.0.0   | MyCluster    | a0ee7d9d-e901-4664-9924-83d967b1516c |
+------------+---------+-------------------+-------------------------+-------------+--------------+--------------------------------------+
1 row in set (0.00 sec)

 

可以看到clusterId爲1

2.我們從第一章“向羣集添加新主機”網頁可以看到訪問的url地址如下:

 

http://xx.169.8.88:7180/cmf/add-hosts-wizard/wizard

 

 

3.帶上clusterId直接在瀏覽器輸入“向羣集添加新主機”的地址。

 

http://xx.169.8.88:7180/cmf/add-hosts-wizard/wizard?clusterId=1

(可左右滑動)

 

 

Ok,搞定,可以正常訪問了,Fayson已經自己測試過了,加入節點進行集羣擴容是可以成功的。

 

三、總結

如本文所述CDH6.0.0在進行集羣擴容加入機器的時候,“向羣集添加新主機”頁面會無法正常顯示,直接報錯,根據報錯是找不到clusterId,我們在瀏覽器直接傳入clusterId參數後訪問正常,集羣的clusterId可以到CM的數據庫中進行查詢。這可能是6.0.0的bug,不清楚最新的6.0.1有沒有修復。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章