Ambari 2.7.3部署Superset启动失败:内部服务器错误
你碰到的这个TypeError: key: expected bytes or bytearray, but got 'int'错误,核心原因很明确:Superset的SECRET_KEY被配置成了整数类型,而Flask底层依赖的itsdangerous库在生成会话签名时,只接受字节或字符串格式的密钥,没法处理整数类型的密钥。
具体修复步骤
定位Superset配置文件
在你的HDP 3.1.4环境里,Superset的配置文件大概率在/usr/hdp/3.1.4.0-315/superset/lib/python3.6/site-packages/superset/config.py;如果是Ambari自定义过配置路径,就去对应的目录查找。修正
SECRET_KEY格式
打开配置文件找到SECRET_KEY项,把它改成字符串格式——最好是至少16位的随机安全字符串,示例如下:SECRET_KEY = "a_very_secure_random_string_with_at_least_16_chars"之前如果是写成
SECRET_KEY = 123456这类整数形式,就会触发这个错误,改成字符串即可解决。重启Superset服务
可以通过Ambari的Web界面找到Superset服务,点击重启按钮;也可以在服务器上执行命令重启:sudo ambari-server restart superset如果是systemd管理的服务,也可以用
sudo systemctl restart superset。验证修复效果
重新访问Superset的Web界面,检查内部服务器错误是否消失,页面能正常加载就说明修复生效了。
额外提醒
SECRET_KEY是Superset用来加密会话、做签名校验的关键配置,千万别用简单数字或者容易猜到的内容,一定要用安全的随机字符串,避免出现安全漏洞。另外如果是通过Ambari的配置界面设置这个参数,输入时要确保是字符串格式(别直接输数字,Ambari可能会把它解析成整数类型)。
内容的提问来源于stack exchange,提问作者sai ganesh

