XiaoMi / minos

Minos is beyond a hadoop deployment system.
Apache License 2.0
522 stars 200 forks source link

搭建tank启动错误 #11

Closed kangfoo closed 10 years ago

kangfoo commented 10 years ago

我刚在git下克隆的代码, 在centos6.4 64位上 安装了python2.7.6, Django1.6.1 ./start_tank.sh 接着就出现了错误。目前对python和django都不是很擅长。请问这个错误该如何解决?

[hadoop@master11 tank]$ tail tank.log CommandError: ":8000" is not a valid port number or address:port pair.

错误日志: Traceback (most recent call last): File "./manage.py", line 10, in execute_from_command_line(sys.argv) File "/usr/local/python276/lib/python2.7/site-packages/django/core/management/init.py", line 399, in execute_from_command_line utility.execute() File "/usr/local/python276/lib/python2.7/site-packages/django/core/management/init.py", line 392, in execute self.fetch_command(subcommand).run_from_argv(self.argv) File "/usr/local/python276/lib/python2.7/site-packages/django/core/management/base.py", line 242, in run_from_argv self.execute(_args, *_options.dict) File "/usr/local/python276/lib/python2.7/site-packages/django/core/management/base.py", line 284, in execute self.validate() ... ...

File "/usr/local/python276/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py", line 35, in raise ImproperlyConfigured("Error loading either pysqlite2 or sqlite3 modules (tried in that order): %s" % exc) django.core.exceptions.ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order): No module named _sqlite3 ./start_tank.sh: line 10: host: command not found

wuzesheng commented 10 years ago

这个应该是你的平台上不支持hostname --fqdn这个命令,你先暂时把tank/start.sh这个脚本里获取ip的逻辑简单改一下,我们下个版本会把这里改得通用一些,尽可能兼容更多的平台。

hpttlook commented 10 years ago

@wuzesheng start_tank是在本地执行,直接将localip="0.0.0.0"是不是就通用了~ ^^

wuzesheng commented 10 years ago

0.0.0.0会有安全隐患,我刚提交了一个fix,你更新代码吧

kangfoo commented 10 years ago

@hpttlook start_tank是在本地执行,直接将localip="0.0.0.0"是不是就通用了~ ^^ 是行不通的。 CommandError: "=0.0.0.0" is not a valid port number or address:port pair.

kangfoo commented 10 years ago

[hadoop@master11 tank]$ tail start_tank.sh

!/bin/sh

db_file="sqlite/tank.db"

if ! [ -e $db_file ] || [ -z "cat $db_file" ]; then ./manage.py syncdb fi

local_ip=/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:" nohup ./manage.py runserver $local_ip:8000 1>tank.log 2>&1 & 对应的错误是: CommandError: Usage is runserver [optional port number, or ipaddr:port]

我虚拟机是多网卡的: [hadoop@master11 tank]$ /sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:" 192.168.56.11 10.0.3.15

直接执行

 ./manage.py runserver localhost:8000

错误如下: File "/usr/local/python276/lib/python2.7/site-packages/django/db/utils.py", line 113, in load_backend return import_module('%s.base' % backend_name) File "/usr/local/python276/lib/python2.7/site-packages/django/utils/importlib.py", line 40, in import_module import(name) File "/usr/local/python276/lib/python2.7/site-packages/django/db/backends/sqlite3/base.py", line 35, in raise ImproperlyConfigured("Error loading either pysqlite2 or sqlite3 modules (tried in that order): %s" % exc) django.core.exceptions.ImproperlyConfigured: Error loading either pysqlite2 or sqlite3 modules (tried in that order): No module named _sqlite3

我想问下,你们用的python,Django版本是多少的。我换你们同样的版本再验证看看是不我这两个版本都太高导致的。

hpttlook commented 10 years ago

我测试过,发现如下的搭配是OK的: python 2.6.x + django 1.4.x python 2.7.x + django 1.5.x

hpttlook commented 10 years ago

你的错误显示,是没有安装sqlite3或者pysqlite,安装尝试执行./manage.py syncdb,不报错应该就好了。

wuzesheng commented 10 years ago

恩,正如@hpttlook 所说,你检查一下你的sqlite库,从报错来看,应该是找不到sqlite库

kangfoo commented 10 years ago

我这边是还需要安装yum install sqlite-devel,pysqlite ... ... 看来搭建环境之前还有很多工作要准备的。在ppt里提到的python,django 是不够的。 我又安装了sqlite-devel, 之后在python官网上下载了pysqlite-2.6.3 tar. python setup.py build_static install 之后,接着就是 gcc -pthread -fno-strict-aliasing -g -O2 -DNDEBUG -g -fwrapv -O3 -Wall -Wstrict-prototypes -fPIC -DMODULE_NAME="pysqlite2.dbapi2" -DSQLITE_ENABLE_FTS3=1 -DSQLITE_ENABLE_RTREE=1 -DSQLITE_OMIT_LOAD_EXTENSION=1 -I/usr/local/python276/include/python2.7 -c sqlite3.c -o build/temp.linux-x86_64-2.7/sqlite3.o gcc: sqlite3.c:没有那个文件或目录 gcc: 没有输入文件 error: command 'gcc' failed with exit status 1 错误。我的pysqlite-2.6.3 tar 解压后的确没有sqlite3.c 文件。这个错误目前不知道如何继续。请问这些软件安装有没有先后顺序,我重装了python好像也不奏效。

wuzesheng commented 10 years ago

恩,需要安装。目前是麻烦一些,我们正在开发一键安装,这个feature做完之后就会方便很多。

kangfoo commented 10 years ago

弄好了,我再当小白鼠。 上面那个 gcc: sqlite3.c:没有那个文件或目录 gcc: 没有输入文件 error: command 'gcc' failed with exit status 1 我目前真的不知道如何解决。有什么建议吗?

wuzesheng commented 10 years ago

你是从源码安装的么?

kangfoo commented 10 years ago

是的,在python官网下载的。 谷歌提供的tar目前网站403错误。

wuzesheng commented 10 years ago

为什么不用yum或者apt这样的工具,感觉会方便很多啊

kangfoo commented 10 years ago

我也想呀,但是没找到源。要不把你用的命令我参考下。

wuzesheng commented 10 years ago

我们用的是公司内部的源。你用的是什么平台, ubuntu还是centos, 还是其它什么?

kangfoo commented 10 years ago

centos

wuzesheng commented 10 years ago

国内centos的源应该挺多的,配置一下用yum装吧 http://hi.baidu.com/mucunzhishu/item/25854a2be64e9bc7dcf69a8a

hpttlook commented 10 years ago

@kangfoo 不错了,你们还能连接外部原源去安装。我连不了外网,公司居然连内部源都没有,全部都通过包安装了一编,而且用了apache branch的hadoop,踩了很多坑。 你提到的pysqlite中没有sqlite3.c,这个猜测是搞反了,sqlit3.c应该是需要安装sqlite3,pysqlite只是对sqlite的python接口。 源码安装麻烦,可以的情况下还是通过yum什么的自动解决依赖安装,会方便很多。

kangfoo commented 10 years ago

源我也配了,sqlite也安装了。错误还是那个。我还是慢慢找吧。谢了! 我是用我自己的电脑学习hadoop当然能联网,听说国内小米公司在开源这块很给力就来围观了。上班事情一堆,做的我都很机械。弄这个找乐呵……

kangfoo commented 10 years ago

对了能把那个ppt迁移到wiki去吗,使用git clone 会很慢的。

wuzesheng commented 10 years ago

呵呵,刚放出来的版本易用性可提升的空间比较大,我们会逐步完善的,也欢迎你在使用的过程中吐槽 :)

git clone只是一次性的工作,clone一次,后面就应该影响不大了,这个ppt基本很少会改了。

kangfoo commented 10 years ago

我换了个操作系统ubuntu13.10 直接使用系统自带了python2.7.5 下载的Django-1.5.5,什么都不用改就成功的将tank启动成功了。好像ip还是绑死的。 我这边默认的系统语言环境是中文的,所以那个启动脚本还的改改: 如:


local_ip=`/sbin/ifconfig -a|grep inet|grep -v 127.0.0.1|grep -v inet6|awk '{print $2}'|tr -d "addr:" |tr -d "地址:" `
wuzesheng commented 10 years ago

ip绑死是指?

kangfoo commented 10 years ago

config/supervisord.conf 文件中的路径都是要修改的,在ppt上没有全部都提到。 还有,文档有没有中英文多语言的呢,我看你PPT都是中文的,代码中的注释是英文的我可以理解。但是git上的readme有全是英文的。为了便于交流是否可以弄个多语言的呢? 像淘宝都弄的是多语言的文档。

kangfoo commented 10 years ago

@wuzesheng ip绑死是指? 是这样的。我现在在家链接的是无限路由器,不知道minos对IP的绑定有没有要求。我看配置文件中都要写IP的。我其实是想填写127.0.0.1 但是 Minos目前是启动的状态,默认是将127.0.0.1这个IP个过滤了。我是想问,我在单机环境中IP是可能变化的情况下,配置文件中的IP都填写为127.0.0.1有没有问题。

kangfoo commented 10 years ago

像这样的ZooKeeper,hdfs,hbase zookeeper-3.4.4 mvn clean package –Pdist –Dtar -DskipTests 我下载hadoop-2.0.0-cdh4.1.0需要9个小时,请问用apache提供的版本有何差异? 还有我目前下载的tar中都没有maven的pom文件,都是ivy的编译脚本,请问我是不是和你找的源文件不一样呀。hbase和zookeeper都是在apache上下载的。 hadoop-2.0.0-cdh4.1.0 还在下载中... ... 漫长的等待,今天很轻松的就把tank,supervisord部署好了。真是没想到。

wuzesheng commented 10 years ago

几个问题回答如下:

  1. 关于语言的问题,我们的初衷其实是想全英文的,但一直没时间完善文档,所以在大家的要求之下,就把在chinahadoop讲课用的那个中文的ppt放出来了。至于像readme这些里面的,我们后面应该也是以英文为主,都是些简单的英文,对于码农来说应该问题不大:)
  2. 明白你的意思了,可以考虑你的虚拟机绑个静态IP,或者你临时改成127.0.0.1,这个在单机测试环境应该是能正常work的
  3. CDH的版本相对稳定一些,大的方面应该差别不大
  4. 你下的tar中没有pom,是不是因为你下的是build好的包,而不是源码包,直接从git/svn checkout?
kangfoo commented 10 years ago

好的。非常感谢。版本应该不一定都需要和PPT上一样的,对把。我找zookeeper-3.4.4几乎很少的。直接到3.4.5了。 mvn clean package –Pdist –Dtar -DskipTests编译这个过程一定要吗,像我这种不了解情况的直接下载的apache提供的源代码加编译好的文件是否可以省掉这个过程. 我在github上为何都找不到你们PPT上对应的ZK3.4.4,hbase0.94.3的分支或者tag。

wuzesheng commented 10 years ago

恩,版本不一定完全一样,ppt上贴的版本是我们现在用的版本,如果用的版本不一样,可能会有一些出入,不过应该不会有太大的问题。

kangfoo commented 10 years ago

像mvn clean package –Pdist –Dtar -DskipTests这个命令我这边是不能执行的,没有配置profile dist 的,同样-Dtar也是不行的。你们那边是不是修改过源代码了的。我目前都是默认执行的zk 的ant build.xml, hbase 的mvn clean install -Dmaven.test.skip=true, hadoop-2.0.0-cdh4.1.0 根本就没找到源代码。 请问这个编译的过程一定要吗,直接使用官方的tar解压后的可以吗? 若你们改过pom那能提供参考下吗? 对于上面的编译结果我验证了下: HBase Shell, version 0.99.0-SNAPSHOT

2014-01-04 02:17:30,036 WARN [main] util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 0 row(s) in 1.6350 seconds

数据存储,scan,都是没问题的,但本地的native-hadoop还是缺失的。显然我还有很多工作没做,虽然它编译成功了。

kangfoo commented 10 years ago

目前在配置文件中的密码好像都是明文的,是否可以像mvn那样允许明文的同时,提供加密的方式,更容易IT安全管理。http://maven.apache.org/guides/mini/guide-encryption.html

kangfoo commented 10 years ago

布署Zookeeper服务 Bootstrap 时出现协议错误

~/study/xiaomi/minos/client$ ./deploy.py bootstrap zookeeper dptst 2014-01-04 13:55:21 You should set a bootstrap password, it will be requried when you do cleanup Set a password manually? (y/n) y Please input your password: 2014-01-04 13:55:26 Your password is: 123456, you should store this in a safe place, because this is the verification code used to do cleanup 2014-01-04 13:55:26 Bootstrapping task 0 of zookeeper on 192.168.1.113(0) 2014-01-04 13:55:56 Bootstrap task 0 of zookeeper on 192.168.1.113(0) fail: <ProtocolError for minosuser:123456@192.168.1.113:9001/RPC2: 500 Internal Server Error> 2014-01-04 13:55:56 Starting task 0 of zookeeper on 192.168.1.113(0) 2014-01-04 13:55:56 Start task 0 of zookeeper on 192.168.1.113(0) fail: You should bootstrap the job first

我没有找到对应错误的日志文件,请问这个错误怎么解决。 备注我这里的zookeeper-3.4.4-mdh1.0.0-SNAPSHOT.tar.gz是直接将apache网站上下载的tar.gz给重命名到build文件下的。不知道是否有影响。

wuzesheng commented 10 years ago
  1. 目前这个密码主要是用来确认操作,防止误操作,基本上没有auth的功能,后面可以考虑加强auth
  2. 失败了可以看的log有:$your_home/log/supervisor.log $your_home/app/zookeeper/$youcluster/zookeeper/stdout/.out $your_home/app/zookeeper/$yourcluster/zookeeper/log/.log
kangfoo commented 10 years ago

今天终于找到问题的原因了: 错误的主要原因是我这边没有找到ZK maven 的工程,直接使用APACHE提供的tar.然后直接将tar重命名为zookeeper-3.4.4-mdh1.0.0-SNAPSHOT.tar.gz 那么在./deploy.py bootstrap zookeeper dptst 之后 zk被解压,但是文件路径出错。 ${home}/dist/app/zookeeper/${your_cluster}/zookeeper/stdout Error: Could not find or load main class org.apache.zookeeper.server.quorum.QuorumPeerMain 那么就再重现修改 /minos/config/conf/zookeeper/zookeeper-dptst.cfg 版本是否可行。 发现是徒劳。 原因是tank skip uploading .那就我尝试了是否可以换个集群的名字。 新建 /minos/config/conf/zookeeper/zookeeper-zk1.cfg 上传对应的install zk-xx-xx.tar.gz。发现还是不能上传提示如下: 原有的tar Package /home/linkang/study/xiaomi/zookeeper/build/zookeeper-3.4.4-mdh1.0.0-SNAPSHOT.tar.gz has already uploaded, skip uploading 新建的tar Generating checksum of package: /home/linkang/study/xiaomi/zookeeper/build/zookeeper-3.4.5.tar.gz 2014-01-11 14:14:08 Checksum is: fd921575e02478909557034ea922de871926efc7 2014-01-11 14:14:08 Package /home/linkang/study/xiaomi/zookeeper/build/zookeeper-3.4.5.tar.gz has already uploaded, skip uploading。 ./deploy.py cleanup zookeeper dptst 也没有效果。 我直接找到了数据库文件minos/tank/sqlite/tank.db 执行delete from package_server_package 然后自己将磁盘中的文件都重现清理下。 困扰我多久的zk 终于启动正常了。 我的问题是: 我有没有其他的途径可以将现有的集群资源全部初始化一次。

kangfoo commented 10 years ago

我在单机环境下执行 ./deploy.py bootstrap hdfs dptst-example 错误: File "/home/linkang/study/xiaomi/minos/client/service_config.py", line 38, in parse_task_number raise ValueError(str(task_id) + ' is not a valid task of cluster, please check your config') ValueError: 1 is not a valid task of cluster, please check your config 配置文件改动为: name=dptst-example

version of maven artifact.

version=2.0.0-cdh4.1.0 [namenode] host.0=127.0.0.1 [datanode] host.0=127.0.0.1 这个错误是我不能在单机下执行吗,还是有配置我没修改完。配置jobtask的地方,就指教。

wuzesheng commented 10 years ago
  1. "我有没有其他的途径可以将现有的集群资源全部初始化一次? ", 这个指的是,还没太明白你的意思?
  2. 这里的错误是说你的task写的有问题,你能打印一下service_config.py 38行那个task吗? BTW: 这个issue之前已经关了,后面每个问题单独建一个新的issue吧,这样方便大家看,谢谢了:)