解决方案:
编辑/etc/hadoop/hadoop-env.sh,修改:
export HADOOP_CLIENT_OPTS="-Xmx512m $HADOOP_CLIENT_OPTS" #改成512m
参考:http://blog.csdn.net/xw13106209/article/details/6861855
点击菜单栏中的“视图”,然后“视图”—
>"自动换行" 即可。
疑问:陆嘉桓 Hadoop实战中,Hadoop集群配置ssh免密码登陆的时候,只将master的公钥分发到了slave上,是不是意味着只有master需要登陆slave而slave无需登陆master?
参见:http://developer.51cto.com/art/201006/203947.htm
无密码SSH 登录 启动Hadoop的方式是在主master上调用下面的命令: $HADOOP_HOME /bin/start-all.sh 此调用过程中,Hadoop依次启动以下服务: 在主master上启动NameNode 服务; 在主master上启动SecondaryNameNode 服务; 在次master上启动SecondaryNameNode 服务; 在所有slave上启动DataNode 服务; 在主master上启动JobTracker 服务; 在所有slave上的TaskTracker 服务。 部署Hadoop过程中Hadoop需要启动服务,在此需要注意以下几点: 启动NameNode 与JobTracker 服务不需要SSH授权; 需要通过SSH登录之后才能启动SecondaryNameNode 、DataNode 以及TaskTracker 服务,因此: 因为需要启动SencondaryNameNode 服务,所以要为主master提供SSH授权; 因为需要启动SencoddaryNameNode 服务,所以要为所有的次master提供SSH授权; 因为需要启动DataNode 和TaskTracker 服务,所以要为所有的slave提供SSH授权。 总而言之,要为Hadoop集群中的所有计算机提供SSH授权。 为什么要提供无密码SSH登录方式呢?为的是图省事儿。试想在启动 Hadoop集群过程中,要手动输入每一台电脑的SSH密码将是一件多么烦人的事!SSH授权的方法在这里不做详细的描述。无密码SSH登录技术也是相对成熟的技术。但有一个环节需要注意,那就是文件的访问权限问题。 表现为: Linux系统中$HOME目录下的.ssh目录为用户所有,权限必须为700(只有用户自己可以全权访问); .ssh目录下的授权文件“authorized_keys”为用户所有,权限必须为644。本节有关部署Hadoop应该注意的事项介绍完毕。
rpm包安装的jdk,装完直接可以运行java,以为自动配好了环境变量。今天发现找不到jps命令,先 find / -name “java” -type d 找到java目录,然后 find /usr/java -name “jps*” ,发现确实有jps命令,看来rpm包并没有完全设置好环境变量。
修改/etc/profile,添加
#set java enviroment JAVA_HOME=/usr/java/default CLASSPATH=.:$JAVA_HOME/lib PATH=$JAVA_HOME/bin:$PATH export JAVA_HOME CLASSPATH PATH
用notepad++,编码为 utf8无BOM即可
在post脚本中进行关闭防火墙的操作,貌似不起作用,导致rsync拉取Master密钥总是失败:
^[[36m[SUCC]: Stop iptables ^[[0m ^[[36m[SUCC]: Chkconfig iptables off ^[[0m /tmp ^[[36m[SUCC]: resourcefile download ok! ^[[0m ^[[36m[SUCC]: hadoop download ok! ^[[0m ^[[36m[SUCC]: jdk download ok! ^[[0m ^[[36m[SUCC]: hadoop_centos.sh download ok! ^[[0m ^[[36m[SUCC]: xinetd down ok! ^[[0m ^[[36m[SUCC]: rsync down ok! ^[[0m ^[[36m[SUCC]: xinetd install ok! ^[[0m ^[[36m[SUCC]: rsync install ok! ^[[0m Stopping xinetd: ^[[60G[^[[0;31mFAILED^[[0;39m]^M Starting xinetd: ^[[60G[^[[0;32m OK ^[[0;39m]^M rsync: failed to connect to Master: No route to host (113) rsync error: error in socket IO (code 10) at clientserver.c(124) [receiver=3.0.6]
折腾半天才想起来可以试试直接在ks配置中禁用防火墙
firewall(可选) 这个选项对应安装程序里的「防火墙配置」屏幕: firewall --enabled|--disabled [--trust=] <device> [--port=] --enabled或者--enable,拒绝不是答复输出请求如DNS答复或DHCP请求的进入连接.如果需要使用在这个机器上运行的服务,可以选择允许指定的服务穿过防火墙. --disabled或--disable,不要配置任何iptables规则. --trust=,在此列出设备,如eth0,这允许所有经由这个设备的数据包通过防火墙.如果需要列出多个设备,使用--trust eth0 --trust eth1.不要使用以逗号分隔的格式,如--trust eth0, eth1. <incoming>,使用以下服务中的一个或多个来替换,从而允许指定的服务穿过防火墙. --ssh --telnet --smtp --http --ftp --port=,可以用端口:协议(port:protocal)格式指定允许通过防火墙的端口. 例如,如果想允许IMAP通过的防火墙,可以指定imap:tcp.还可以具体指定端口号码,要允许UDP分组在端口1234通过防火墙,输入1234:udp.要指定多个端口,用逗号将它们隔开. http://blog.chinaunix.net/uid-17240700-id-2813881.html
#!/bin/sh while [ 0 -eq 0 ] do echo ".................. job begin ..................." # ...... call your command here 在这里调用你的命令 ...... # check and retry if [ $? -eq 0 ]; then echo "--------------- job complete ---------------" break; else echo "...............error occur, retry in 2 seconds .........." sleep 2 fi done
ssh登录某台机器的时候,如果这台机器从来没有使用ssh登录过(严格来说应该是~/.ssh/knownhosts文件中没有这台机器的HostKey),那么,ssh会产生一个提示,询问是否需要添加这台机器的HostKey,回答yes/no即可,虽然只要不删除~/.ssh/knownhosts文件中该机器的HostKey,则这个提示将不会出现,但是如果我们需要书写一些自动化脚本的时候,这就会成为问题。
man了一下sshconfig,发现有解决的办法:创建文件~/.ssh/config,添加一行:
StrictHostKeyChecking no
即可。以后ssh将会自动添加HostKey到~/.ssh/knownhosts,不会再询问。默认该项配置是ask,所以会询问。如果配置成yes,则每次必须手动将hostkey添加到~/.ssh/known_hosts文件中,这是最严格的配置。
From:http://blog.163.com/kartwall@126/blog/static/8942370200831485241268/
DIR=“$( cd “$( dirname “${BASH_SOURCE[0]}” )” && pwd )”
这是stackoverflow上推荐的方法
我看了两遍,不明觉厉
后来改了一下:
S0=“${BASH_SOURCE[0]}”
DIRNAME=“$( dirname “$S0”)”
DIR=“$( cd “$DIRNAME” && pwd)”
echo “$S0”
echo “$DIRNAME”
echo “$DIR”
运行脚本,输出:
./build/jenkins/tesh.sh
./build/jenkins
/Users/heliclei/.jenkins/jobs/dailybuild-develop-ios/workspace/build/jenkins
S0是脚本相对于当前目录的路径,是相对路径
再用dirname命令得到脚本的目录名,也是相对路径
用cd命令切换到脚本所在目录,再执行pwd命令,
就得到了脚本所在目录的绝对路径
推荐一本学习bash脚本的好书《Bash Beginners Guide》
来自:http://www.2cto.com/os/201312/267533.html
Installing : cloudstack-management-4.3.0-1.el6.x86_64 132/132 Please download vhd-util from http://download.cloud.com.s3.amazonaws.com/tools/vhd-util and put it in /usr/share/cloudstack-common/scripts/vm/hypervisor/xenserver/ Unable to determine ssl settings for server.xml, please run cloudstack-setup-management manually Unable to determine ssl settings for tomcat.conf, please run cloudstack-setup-management manually
用绝对路径比较省事,不会有乱七八糟的问题。 比如镜像目录结构如下:
-centos -Packages -repodata -group.xml
createrepo -g /…/centos/repodata/group.xml /…/centos/
大概是 Cloudstack-setup-database和Cloudstack-setup-management执行顺序的问题,先执行前者
直接挂载centos dvd盘比较方便,挂载到web目录下
来宾VM,大概是指除系统VM之外的VM,可以公网访问的,可以租给客户的VM. 系统VM,大概是指用来管理虚机的VM
2014-05-19 02:35:38,912 INFO [cloud.agent.AgentShell] (main:null) Implementation Version is 4.3.0 2014-05-19 02:35:38,918 INFO [cloud.agent.AgentShell] (main:null) agent.properties found at /etc/cloudstack/agent/agent.properties 2014-05-19 02:35:38,956 INFO [cloud.agent.AgentShell] (main:null) Defaulting to using properties file for storage 2014-05-19 02:35:38,962 INFO [cloud.agent.AgentShell] (main:null) Defaulting to the constant time backoff algorithm 2014-05-19 02:35:39,037 INFO [cloud.utils.LogUtils] (main:null) log4j configuration found at /etc/cloudstack/agent/log4j-cloud.xml 2014-05-19 02:35:39,315 INFO [cloud.agent.Agent] (main:null) id is 2014-05-19 02:35:39,327 WARN [cloud.resource.ServerResourceBase] (main:null) Nics are not specified in properties file/db, will try to autodiscover 2014-05-19 02:35:39,345 INFO [cloud.resource.ServerResourceBase] (main:null) Designating private to be nic br0 2014-05-19 02:35:39,388 INFO [resource.virtualnetwork.VirtualRoutingResource] (main:null) VirtualRoutingResource _scriptDir to use: scripts/network/domr/kvm 2014-05-19 02:35:40,168 ERROR [cloud.agent.AgentShell] (main:null) Unable to start agent: Failed to get private nic name
查看/etc/cloudstack/agent/agent.properties
private.network.device=cloudbr0 public.network.device=cloudbr0 guest.network.device=cloudbr0
网桥名称是cloudbr0,当初自己图简短网桥用的是br0.
http://my.oschina.net/u/572653/blog/145465#OSC_h2_10
日志:
2014-05-19 03:32:25,273 WARN [kvm.resource.LibvirtComputingResource] (agentRequest-Handler-3:null) LibvirtException org.libvirt.LibvirtException: Unable to create cgroup for s-30-VM: 没有那个文件或目录 at org.libvirt.ErrorHandler.processError(Unknown Source) at org.libvirt.Connect.processError(Unknown Source) at org.libvirt.Connect.processError(Unknown Source) at org.libvirt.Connect.domainCreateXML(Unknown Source) at com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.startVM(LibvirtComputingResource.java:1213) at com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.execute(LibvirtComputingResource.java:3659) at com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.executeRequest(LibvirtComputingResource.java:1307) at com.cloud.agent.Agent.processRequest(Agent.java:498) at com.cloud.agent.Agent$AgentRequestHandler.doTask(Agent.java:806) at com.cloud.utils.nio.Task.run(Task.java:83) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:701) 2014-05-19 03:32:54,166 WARN [kvm.resource.LibvirtComputingResource] (agentRequest-Handler-2:null) LibvirtException org.libvirt.LibvirtException: Unable to create cgroup for s-30-VM: 没有那个文件或目录 at org.libvirt.ErrorHandler.processError(Unknown Source) at org.libvirt.Connect.processError(Unknown Source) at org.libvirt.Connect.processError(Unknown Source) at org.libvirt.Connect.domainCreateXML(Unknown Source) at com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.startVM(LibvirtComputingResource.java:1213) at com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.execute(LibvirtComputingResource.java:3659) at com.cloud.hypervisor.kvm.resource.LibvirtComputingResource.executeRequest(LibvirtComputingResource.java:1307) at com.cloud.agent.Agent.processRequest(Agent.java:498) at com.cloud.agent.Agent$AgentRequestHandler.doTask(Agent.java:806) at com.cloud.utils.nio.Task.run(Task.java:83) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:701)
解决
北京-雪舞云飘<wufengcheng@163.com>4:03:52 PM 我在构建云的时候总是卡在create system vms在这直接报错报Unable to create cgroup for v-2-VM:No such file or directory怎么解决啊 广州-Bones(17034478)4:04:43 PM @北京-雪舞云飘 有没有按照步骤一步一步进行配置? 北京-雪舞云飘<wufengcheng@163.com>4:05:12 PM 检查了N遍了,也没找到问题 北京-森林(120437047)4:05:32 PM @北京-雪舞云飘 kvm? 北京-雪舞云飘<wufengcheng@163.com>4:05:48 PM 对啊 北京-森林(120437047)4:07:17 PM 试试这组命令吧 北京-森林(120437047)4:07:18 PM service libvirtd stop # restart kvm service libvirtd start service rpcidmapd restart service rpcbind restart service nfs restart 北京-森林(120437047)4:07:32 PM 我是安装完kvm之后重启后就解决了 上海-berlin.FBI<fanbailin@126.com>4:07:34
正常的agent日志
2014-05-19 03:35:23,905 ERROR [kvm.storage.LibvirtStorageAdaptor] (agentRequest-Handler-1:null) org.libvirt.LibvirtException: Requested operation is not valid: Target '/mnt/3d7229c6-522d-3c68-bfd4-76f44bb1a48e' is already mounted 2014-05-19 03:35:23,906 ERROR [kvm.storage.LibvirtStorageAdaptor] (agentRequest-Handler-1:null) Attempting to unmount old mount libvirt is unaware of at /mnt/3d7229c6-522d-3c68-bfd4-76f44bb1a48e 2014-05-19 03:35:24,075 ERROR [kvm.storage.LibvirtStorageAdaptor] (agentRequest-Handler-1:null) Succeeded in unmounting /mnt/3d7229c6-522d-3c68-bfd4-76f44bb1a48e 2014-05-19 03:35:24,164 ERROR [kvm.storage.LibvirtStorageAdaptor] (agentRequest-Handler-1:null) Succeeded in redefining storage
WARN [c.c.c.ConsoleProxyManagerImpl] (consoleproxy-1:ctx-22515378) Exception while trying to start console proxy com.cloud.exception.InsufficientServerCapacityException: Unable to create a deployment for VM[ConsoleProxy|v-1-VM]Scope=interface com.cloud.dc.DataCenter; id=1 at com.cloud.vm.VirtualMachineManagerImpl.orchestrateStart(VirtualMachineManagerImpl.java:921) at com.cloud.vm.VirtualMachineManagerImpl.advanceStart(VirtualMachineManagerImpl.java:761) at com.cloud.vm.VirtualMachineManagerImpl.advanceStart(VirtualMachineManagerImpl.java:745) at com.cloud.consoleproxy.ConsoleProxyManagerImpl.startProxy(ConsoleProxyManagerImpl.java:555) at com.cloud.consoleproxy.ConsoleProxyManagerImpl.allocCapacity(ConsoleProxyManagerImpl.java:941) at com.cloud.consoleproxy.ConsoleProxyManagerImpl.expandPool(ConsoleProxyManagerImpl.java:1666) at com.cloud.consoleproxy.ConsoleProxyManagerImpl.expandPool(ConsoleProxyManagerImpl.java:157) at com.cloud.vm.SystemVmLoadScanner.loadScan(SystemVmLoadScanner.java:118) at com.cloud.vm.SystemVmLoadScanner.access$100(SystemVmLoadScanner.java:35) at com.cloud.vm.SystemVmLoadScanner$1.reallyRun(SystemVmLoadScanner.java:88) at com.cloud.vm.SystemVmLoadScanner$1.runInContext(SystemVmLoadScanner.java:79) at org.apache.cloudstack.managed.context.ManagedContextRunnable$1.run(ManagedContextRunnable.java:49) at org.apache.cloudstack.managed.context.impl.DefaultManagedContext$1.call(DefaultManagedContext.java:56) at org.apache.cloudstack.managed.context.impl.DefaultManagedContext.callWithContext(DefaultManagedContext.java:103) at org.apache.cloudstack.managed.context.impl.DefaultManagedContext.runWithContext(DefaultManagedContext.java:53) at org.apache.cloudstack.managed.context.ManagedContextRunnable.run(ManagedContextRunnable.java:46) at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask$Sync.innerRunAndReset(FutureTask.java:351) at java.util.concurrent.FutureTask.runAndReset(FutureTask.java:178) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$201(ScheduledThreadPoolExecutor.java:165) at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:267) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:701) INFO [c.c.h.HighAvailabilityManagerImpl] (HA-5:ctx-92dff8c3) checking health of usage server WARN [o.a.c.alerts] (HA-5:ctx-92dff8c3) alertType:: 13 // dataCenterId:: 0 // podId:: 0 // clusterId:: null // message:: No usage server process running INFO [c.c.n.v.VpcManagerImpl] (VpcChecker-1:ctx-59fffc8c) Found 0 removed VPCs to cleanup INFO [c.c.c.ConsoleProxyManagerImpl] (consoleproxy-1:ctx-e8d75566) Found a stopped console proxy, bring it up to running pool. proxy vm id : 1 WARN [c.c.c.ConsoleProxyManagerImpl] (consoleproxy-1:ctx-e8d75566) Exception while trying to start console proxy com.cloud.exception.InsufficientServerCapacityException: Unable to create a deployment for VM[ConsoleProxy|v-1-VM]Scope=interface com.cloud.dc.DataCenter; id=1
可能是内存不足:http://discussions.citrix.com/topic/346360-unable-to-create-a-deployment-for-vm/
查看Cloudstack服务方案→系统方案
内存要求1G,VM总共才1G当然不够用
搜索secstorage关键字,找到一个叫做“secstorage.allowed.internal.sites”的配置参数,设置为 可访问的IP如(192.168.1.1/24),敲回车确认即可。这个参数是说,Web服务器的网段在192.168.1.*;然后到管理节点的命令行重启服务: # service cloud-management restart
重新登陆界面,在此添加ISO模版,就不会出现“connection refused”的错误。
http://www.cnblogs.com/skyme/p/3157990.html
s是二级存储,v是控制台代理 r是虚拟路由,i是普通实例(instance)
http://liuzhijun.iteye.com/blog/1783698
virsh undefine vm1354695894990 error: Refusing to undefine while domain managed save image exists http://www.redhat.com/archives/libvir-list/2011-July/msg01219.html managedsave 解决办法:virsh undefine $domain --managed-save
问题终于解决来。不是一般的菜鸟真的伤不起啊。 解决方法参考链接:http://www.360doc.com/content/12/0507/14/9318309_209243400.shtml 其实,问题很简单,就是要关闭网络管理器: chkconfig NetworkManager off service NetworkManager stop 复制代码 似乎在某文章里提到过这个东西,但我不知道怎么关闭,就忽略了,不知道把这个服务启动会怎么样。
注意:官网给出的安装手册要求配置网桥,经过我多次的测试,这一步完全是误导大家,Agent端在网络方面完全不需要做任何的操作(并且官网提供的手册还存在错误,按照他写的配置会断掉物理网络,尽管官网提醒大家要提前准备IPMI,坑爹啊)。(From: http://my.oschina.net/lionel45/blog/176599#OSC_h2_6)
4楼:tanthalas 发表于 2014-04-22 11:45 回复此评论 如果划分流量在多块网卡,仍需要手动建网桥。官方文档不能说全错,只是在一块网卡上模拟多个网卡而已。
需关机进行
用笔记本虚拟机做Cloudstack实验简直就是 no zuo no die!!!
/etc/salt/minion_id缓存会造成主机名修改后salt-master不能更新。所以更改主机名后要清空该文件。
http://blog.segmentfault.com/yexiaobai/1190000000505397
报错:
Another MySQL daemon already running with the same unix socket
原因多个Mysql进程使用了同一个socket,可能是上次没正常关闭mysql服务,机器重启后/var/lib/mysql/mysql.sock 还存在,但mysql服务没正常启动
两个方法解决:
直接把mysql.sock文件改名即可。也可以删除,推荐改名。
然后就可以启动mysql了。
最好不要强制关机。
貌似是关机顺序导致的,先关Agent,在关management和nfs