编译之前,我们首先简单梳理一下 impala 的编译脚本,因为一般这种大型、多语言的项目,编译起来都比较麻烦,不是一堆 bash 脚本,就是一堆 python 脚本,搞起来可能会报各种莫名其妙的问题,所以前期先梳理一下,跑一步看一步。
看脚本的首先看下有没有 help
之类的选择,但是比较蛋疼的是,大致看了脚本,help
给的信息不太足够了解整个编译的步骤和 trick。
关键脚本是 buildall.sh,一看六百多行…看一下定义了几个 function。
然后看到关于依赖的是这个 bootstrap_depenencies
的函数,大致看看,肯定是有关于 Python 的下载的。
关于 toolchain,可以跳转到这个文件。
另外还有各种条件变量会帮助跳过一些依赖的安装。
2021-07-31 01:47:32,266 Thread-1 INFO: Downloading https://native-toolchain.s3.amazonaws.com/build/cdp_components/14842939/tarballs/apache-hive-3.1.3000.7.2.12.0-35-bin.tar.gz to /impala/toolchain/cdp_components-14842939/apache-hive-3.1.3000.7.2.12.0-35-bin.tar.gz (attempt 3)
2021-07-31 01:47:34,528 Thread-3 INFO: Downloading https://native-toolchain.s3.amazonaws.com/build/cdp_components/14842939/tarballs/ranger-2.1.0.7.2.12.0-35-admin.tar.gz to /impala/toolchain/cdp_components-14842939/ranger-2.1.0.7.2.12.0-35-admin.tar.gz (attempt 3)
2021-07-31 01:47:35,820 Thread-4 INFO: Downloading https://native-toolchain.s3.amazonaws.com/build/21-dd7509fc38/kudu/f486f0813a-gcc-7.5.0/kudu-f486f0813a-gcc-7.5.0-ec2-package-centos-7.tar.gz to /impala/toolchain/toolchain-packages-gcc7.5.0/kudu-f486f0813a-gcc-7.5.0-ec2-package-centos-7.tar.gz (attempt 3)
最后还是报错了,注意看报错信息,可能是下载解压 ranger 的时候报错了。
2021-07-31 01:48:19,138 Thread-3 INFO: Extracting ranger-2.1.0.7.2.12.0-35-admin.tar.gz
Traceback (most recent call last):
File "/impala/bin/bootstrap_toolchain.py", line 534, in <module>
if __name__ == "__main__": main()
File "/impala/bin/bootstrap_toolchain.py", line 531, in main
execute_many(download, components_needing_download)
File "/impala/bin/bootstrap_toolchain.py", line 417, in execute_many
return pool.map(f, args, 1)
File "/usr/lib64/python2.7/multiprocessing/pool.py", line 250, in map
return self.map_async(func, iterable, chunksize).get()
File "/usr/lib64/python2.7/multiprocessing/pool.py", line 548, in get
self.wait(timeout)
File "/usr/lib64/python2.7/multiprocessing/pool.py", line 543, in wait
self._cond.wait(timeout)
File "/usr/lib64/python2.7/threading.py", line 339, in wait
waiter.acquire()
KeyboardInterrupt
先写到这里,后面再继续。