分类 软件 下的文章

主要参照这个:https://www.linode.com/docs/databases/hadoop/how-to-install-and-set-up-hadoop-cluster/

官方文档不花花绿绿的,不好看

然后就是后期遇到的一些小问题:

  1. 所有服务器都要改/etc/hosts,但是主服务器master和从服务器slave的侧重点不完全一样。主服务器配hosts的目的是有效而顺利地访问从服务器(不然在hadoop配置文件里写一堆ip估计不见得很爽),所以要把其他服务器的ip都配置正确,本机解析为localhost问题也不大;从服务器的话,只需要与主服务器(以及自身)打交道,所以一定要把主服务器的hosts域名配置正确。不然可能的情况之一就是服务跑起来了,但是主服务器报告hdfs空间大小为0。这个问题可以在datanode的日志文件中看出来。

    另外一个是,最好把自身的hosts名称(在此称作域名)从localhost改一下,变成和主机访问的一致,不然在访问hadoop的网络管理界面时,它会把hosts中域名相同的删减到只剩一个。这个时候千万不要以为是节点没跑起来,别问我怎么知道的

    然而更为有效的方式是注释掉127.0.0.1::1两行,然后再修改/etc/hostname为设置的节点域名。这个更改可以通过hostname -f看出来,这样既可以让hdfs正常识别出datanode的名称,又能让yarn正常跑任务。我遇到的情况有两种:一是yarn任务一直失败,看容器日志可以发现子容器一直在访问不存在的本机RPC地址(调整yarn.app.mapreduce.am.env / mapreduce.map.env更改日志详细程度),然而这个访问本来应该是朝着ApplicationMaster所在节点发送的,这是ApplicationMaster所在节点把自身域名解析到127.0.0.1造成的;第二个是把localhost解析到127.0.0.1,这个会导致hdfs节点显示异常。

  2. 注意iptables防火墙可能导致文件存储失败。懒人模式:iptables -F生产环境千万别用!

  3. 一定要记得在yarn中显式声明主节点的域名,否则yarn可能认为集群中无节点:https://stackoverflow.com/questions/32727675/slave-nodes-not-in-yarn-resourcemanager

    原理是yarn中默认的访问主节点的地址是0.0.0.0,仔细想想也会发现根本不可能访问到任何东西= =

  4. 如果因为你的电脑很穷酸所以需要限制单次任务中yarn分配的内存的话,需要设置两个地方:https://stackoverflow.com/questions/24233963/hadoop-yarn-how-to-limit-requestedmemory

    一是yarn-site.xml中的yarn.scheduler.maximum-allocation-mb选项;

    二是mapred-site.xml中的yarn.app.mapreduce.am.resource.mb选项。

    注意需要确保后者不大于前者(非则就会报出无法分配资源的情况,因为最小申请大小大于最大分配大小)。

附带常用命令:

命令行查看当前hdfs集群状态:

hdfs dfsadmin -report

访问/修改hdfs内文件:

hdfs dfs -ls /  # 等价于ls /,注意这里好像加不了-al一类的参数
hdfs dfs -put <local_file> <hdfs_file>  # 传文件进去
hdfs dfs -get <hdfs_file> <local_file>  # 取文件出来

取消延长MIDI对象时的自动重复:在MIDI对象上右键 -> Item Settings -> Loop item source勾掉(仅对该对象有效)


Ctrl+/Ctrl+更改波形waveform高度


批量选中MIDI音符:右键框选 左右滚动音符板:Alt+滚轮

前情提要

这回在tf官方repo发现有人问了类似的问题,给出的建议是按照推荐的编译环境操作一遍。然后因为C盘红了,就装了一个2017的build tools(微软官方提供的,不带IDE的编译器)。

这回好了很多,一口气跑到了1w+的target,越过了之前不到800必红的诅咒(ERROR)。

结果给我来一句

ImportError: Could not find 'cudart64_.dll'.

然后又红了???

然后找到一个别人发的issue:https://github.com/tensorflow/tensorflow/issues/29831

发现设置环境变量没有用。照样报错。后来有人在下面建议用bazel自带的环境变量定义方式来传递:

build --action_env TF_CUDA_VERSION="10.1"
build --action_env TF_CUDNN_VERSION="7"

把两个--action_env和参数一起传进去之后,编译居然重新开始了= =
估计是之前参数压根就没传进去吧。。等编完看结果了(我不想再写第四篇了555

====================================
第二天更新

编译成功了!Ура!!

然后可能遇到的问题是,cmd下的unzip命令好像有点问题,解压会漏文件,到MSYS2下去执行最后的build_pip_package.sh即可避免问题。

终于不坑了!系列完结!(真就编译器版本的问题呗)

====================================
2020/4/17

今天编译东西的时候顺便看了一下,似乎是可以不用装VS2017的,实际上在本次与之前编译的区别在于使用的编译器版本不同,VS2019默认的编译工具集是v142,而VS2017是v141。但是实际上是可以在VS2019的安装器中找到v141编译器工具集的选项的。因此推测,直接在VS2019中安装v141版本的工具集,然后在编译的时候指定编译器版本,也是能够正常编译的。有待测试。

不记得之前为什么用过了,反正在配置VS2019+CUDA9.2的时候用过这个方法,至于有没有用,为啥用都忘记了

https://devtalk.nvidia.com/default/topic/1049858/cuda-setup-and-installation/msvs-2019-and-cuda-10-1-issues/

复制一下防止原链翻车

I found a solution to this.

  1. Copying the content of the folder: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\extras\visual_studio_integration\MSBuildExtensions

    to:

    C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\BuildCustomizations

  2. Close all running instances of Visual Studio. Go to C:\Program Files (x86)\Microsoft Visual Studio\2019\Professional\Common7\IDE\Extensions\NVIDIA. Create a directory here called CUDA 10.1 Wizards, then create a sub-directory underneath it called 10.1.

  3. In this 10.1 sub-directory, create shortcuts to: (VS will not allow to create the shortcuts directly here. Create the shortcuts on the desktop and move them from there to this 10.1 sub-directory):

    C:\ProgramData\NVIDIA GPU Computing Toolkit\v10.0\extras\visual_studio_integration\CudaProjectVsWizards\2019\extension.vsixmanifest

    and

    C:\ProgramData\NVIDIA GPU Computing Toolkit\v10.1\extras\visual_studio_integration\CudaProjectVsWizards\Nvda.Vsip.CudaWizards.dll.pkgdef

  4. Once these shortcuts are in place, open a Visual Studio 2019 developer command prompt in administrator mode and run 'devenv.com /setup /nosetupvstemplates'.

  5. Re-start Visual Studio 2019 and see if the project templates are available now.

All information collected above are from the forums. Only summarizing it here.

However the intellisense does not work.

Thanks.

今天配VS2019+CUDA10.0的时候又看到这个了,码一下

这波很诡异,NSight for Visual Studio Edition已经卸载过了,扩展里的选项卡居然还在。重置一下VS试试。

AppVeyor作为一个CI/CD平台,提供自动的持续集成和持续部署的服务。

何谓持续集成呢,从我个人的角度理解,项目都是以源码的形式编写的。在交付用户使用的时候,显然通常需要编译为机器可直接运行的二进制文件。二进制文件的修改往往很困难,因而一般都会选择从修改后的源码重新编译一份。在产品的开发或者维护中,经常需要进行小修小补式的更改,来添加新功能或者修复bug。而每次重新编译这个过程繁琐而不可避免。CI做的就是这个事情,不但一键编译,连这个触发编译的操作都是自动探测完成的。比如说Github,CI可以做到提交一个commit就自动编译项目。

用别人的话总结说就是,CI可以完成项目中重复性的工作。

然后个人感觉,上手前主要需要了解两个东西:整个CI过程的分段定义,以及appveyor.yml的作用和用法。这个可以通过看官方文档完成。了解基本用途的耗时并不长。参见https://www.appveyor.com/docs