免费影视网站建设,自己怎么开发游戏软件,网页的依托网站,seo公司是怎么做的一、集群安装条件前置
在虚拟机上先准备一个机子 按用前面【安装单机hadoop】 已完成安装jdk,hadoop和ssh、网络等配置环境等。
虚拟机和操作系统
环境#xff1a;ubuntu14 hadoop2.6jdk1.7ssh
虚拟机#xff1a;#xff08;vmware10#xff09; 二、集群安装环境设置…一、集群安装条件前置
在虚拟机上先准备一个机子 按用前面【安装单机hadoop】 已完成安装jdk,hadoop和ssh、网络等配置环境等。
虚拟机和操作系统
环境ubuntu14 hadoop2.6jdk1.7ssh
虚拟机vmware10 二、集群安装环境设置
Hadoop的安装为分布式模式考虑到实际条件集群机定为3台2台也可以。
1克隆3个ubuntu实例
先关闭当前虚拟机实例在虚拟机工具栏上点击【虚拟机】|【管理】|【克隆】打开克隆虚拟机向导窗口点击【下一步】|【下一步】其中克隆类型选择【创建完整克隆】点击【下一步】填写【虚拟机名称】|【位置】【完成】克隆。 2设置3台机子的hostname
先正确设置各虚拟机的hostname 执行命令
sudo gedit /etc/hostname
将文件中的名称改成想要的机器名如 hadoop01 hadoop02 hadoop03。 3设置3台机子的hosts文件
修改3台虚拟机hosts文件都是一样 执行命令
sudo gedit /etc/hosts
在hosts文件添加如下内容
192.168.150.128 hadoop01
192.168.150.129 hadoop02
192.168.150.130 hadoop03
这样就不用记IP了。也可以只修改一台其他使用scp命令拷贝hosts文件。 4设置虚拟机的静态ip
修改3台主机设置静态ip在hadoop0x上也要参考设置修改成具体的ip
sudo gedit /etc/network/interfaces
打开文件修改成已下内容(hadoop01)
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.150.128
netmask 255.255.255.0
network 192.168.150.0
boardcast 192.168.150.255
gateway 192.168.150.2
打开文件修改成已下内容(hadoop02)
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.150.129
netmask 255.255.255.0
network 192.168.150.0
boardcast 192.168.150.255
gateway 192.168.150.2
打开文件修改成已下内容(hadoop03)
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet static
address 192.168.150.130
netmask 255.255.255.0
network 192.168.150.0
boardcast 192.168.150.255
gateway 192.168.150.2 5配置NAT网络
1虚拟机网络设置
在虚拟机工具栏上点击【编辑机】|【虚拟机网络编辑】如果没有NAT模式的网络就点击【添加网络】然后Wnet信息修改为【NAT模式】设置子网为【192.168.150.0】点击【NAT设置】按钮如图【NAT设置图】点击【DCHP设置】按钮如图【DCHP设置图】点击【应用】按钮和【确认】按钮。 NAT设置图 DCHP设置图 2设置虚拟计算机NAT
选择【我的计算机】的一个虚拟机鼠标右键选择【设置】选择【网络适配器】在右侧【网络连接】点击【自定义】然后选择【NAT模式】的网络点击【确定】按钮保存 6重启检验网络
重启一次系统生效
每个虚拟机执行命令
ping hadoop01
ping hadoop02
ping hadoop03
正常的话应该能ping通 。如果不能ping通重新设置NAT网络。 7配置DNS服务器虚拟机能上网忽略这个步骤
如果不能上网需要修改/etc/resolv.conf文件,配置DNS服务器
执行命令
sudo gedit /etc/resolv.conf
修改文件添加如下配置
nameserver 8.8.8.8 8.8.4.4
nameserver 124.172.174.13 8配置ssh免密码登录
配置ssh免密码登录是让各节点能自动通过安全认证不影响正常通讯。
1安装SSH已安装的忽略
安装ssh有两种方式:
A.在ubuntu上在线安装
执行命令
sudo apt-get install ssh
sudo apt-get update
B.离线安装
在网上下载离线包,拷贝到ubuntu中按照离线包中的安装说明在本地进行安装
2配置ssh的实现
配置ssh的实现思路:
在每台机子上都使用ssh-keygen生成public keyprivate key 所有机子的public key都拷到一台机子如hadoop01上
在hadoop01上生成一个授权key文件authorized_keys 最后把authorized_keys拷给所有集群中的机子就能保证无密码登录
1、在所有虚拟机上在当前用户目录下生成公钥、私钥对
执行命令
cd /home/mk
ssh-keygen -t rsa -P 2、导入公钥
执行hadoop01命令
cat .ssh/id_rsa.pub .ssh/authorized_keys
执行完以后可以在本机上测试下用ssh连接自己
执行命令
ssh hadoop01
#成功登陆则退出
exit
如果提示要输入密码 查看authorized_keys文件权限 如果是属于其他用户的 需要修改该文件给其他用户权限
执行命令
chmod 644 .ssh/authorized_keys
修改文件权限然后再测试下
ssh hadoop01
如果不需要输入密码就连接成功表示ok一台机器已经搞定了。 tip:出现问题尝试解决
请先检查SSH服务是否启动如果没启动请启动
如果没有.ssh目录则创建一个:
执行命令
cd /home/mk
mkdir .ssh
如无权限使用命令修改要操作文件夹的owner为当前用户
执行命令
sudo chown -R mk /home/mk
3、在其它机器上生成公钥、密钥并将公钥文件复制到hadoop01
执行命令:
#在hadoop0x上:
scp .ssh/id_rsa.pub mkhadoop01:/home/mk/id_rsa_1.pub#在slave2上:
scp .ssh/id_rsa.pub mkhadoop01:/home/mk/id_rsa_2.pub
hadoop01中查看下/home/mk目录应该有二个新文件id_rsa_1.pub、id_rsa_2.pub 在hadoop01上导入这二个公钥
执行命令
cat id_rsa_1.pub .ssh/authorized_keys
cat id_rsa_2.pub .ssh/authorized_keys
这样hadoop01这台机器上就有所有3台机器的公钥了。
4、将hadoop01上的“最全”公钥复制到其它机器
在hadoop01上 执行命令
scp .ssh/authorized_keys mkhadoop02:/home/mk/.ssh/authorized_keys
scp .ssh/authorized_keys mkhadoop02:/home/mk/.ssh/authorized_keys
修改其它机器上authorized_keys文件的权限 hadoop02以及hadoop03机器上均执行命令 chmod 600 .ssh/authorized_keys
5、验证
在每个虚拟机上均用命令 ssh其它机器的hostname 都能正常无密码连接成功 执行命令
ssh hadoop01
ssh hadoop02
ssh hadoop03
6、SSH免密码设置失败解决 A.权限问题 .ssh目录以及/home/当前用户 需要700权限参考以下操作调整
sudo chmod 777 ~/.ssh
sudo chmod 700 /home/当前用户
.ssh目录下的authorized_keys文件需要600或644权限参考以下操作调整
sudo chmod 644 ~/.ssh/authorized_keys
B.StrictModes问题
sudo gedit /etc/ssh/sshd_config
#找到
#StrictModes yes
#改成
StrictModes no
如果还不行可以用ssh -vvv 目标机器ip 查看详情 三、配置hadoop集群
一共有7个文件要修改 hadoop-2.6.0/etc/hadoop/hadoop-env.sh hadoop-2.6.0/etc/hadoop/yarn-env.sh hadoop-2.6.0/etc/hadoop/core-site.xml hadoop-2.6.0/etc/hadoop/hdfs-site.xml hadoop-2.6.0/etc/hadoop/mapred-site.xml hadoop-2.6.0/etc/hadoop/yarn-site.xml hadoop-2.6.0/etc/hadoop/slaves 执行命令
cd /home/mk/soft/hadoop-2.6.0
1 hadoop-env.sh 、yarn-env.sh
这二个文件主要是修改JAVA_HOME改成实际本机jdk所在目录位置
执行命令
gedit etc/hadoop/hadoop-env.sh
gedit etc/hadoop/yarn-env.sh
打开文件找到下面这行的位置改成jdk目录位置大家根据实际情况修改
export JAVA_HOME/home/mk/soft/jdk1.7.0_80
在 hadoop-env.sh中加上这句:
export HADOOP_PREFIX/home/mk/soft/hadoop-2.6.0
2core-site.xml 参考下面的内容修改:
?xml version1.0 encodingUTF-8?
?xml-stylesheet typetext/xsl hrefconfiguration.xsl?
configurationpropertynamefs.defaultFS/namevaluehdfs://hadoop01:9000/value /propertypropertynamehadoop.tmp.dir/namevalue/home/mk/tmp/value/property
/configuration 注/home/mk/tmp 目录如不存在则先mkdir手动创建 core-site.xml的完整参数请参考 http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-common/core-default.xml3hdfs-site.xml
参考下面的内容修改:
?xml version1.0 encodingUTF-8??xml-stylesheet typetext/xsl hrefconfiguration.xsl?configurationpropertynamedfs.datanode.ipc.address/namevalue0.0.0.0:50020/value/propertypropertynamedfs.datanode.http.address/namevalue0.0.0.0:50075/value/property propertynamedfs.namenode.name.dir/namevaluefile:/home/mk/data/namenode/value/propertypropertynamedfs.datanode.data.dir/namevaluefile:/home/mk/data/datanode/value/propertypropertynamedfs.namenode.secondary.http-address/namevaluehadoop02:9001/value/property propertynamedfs.replication/namevalue1/value/propertyproperty namedfs.permissions/name valuefalse/value /property/configuration
hdfs-site.xml的完整参数请参考 http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-hdfs/hdfs-default.xml
4mapred-site.xml
参考下面的内容修改:
?xml version1.0?
?xml-stylesheet typetext/xsl hrefconfiguration.xsl?
configurationpropertynamemapreduce.framework.name/namevalueyarn/value/propertypropertynamemapreduce.jobhistory.address/namevaluehadoop01:10020/value/propertypropertynamemapreduce.jobhistory.webapp.address/namevaluehadoop01:19888/value/property
/configurationmapred-site.xml的完整参数请参考 http://hadoop.apache.org/docs/r2.6.0/hadoop-mapreduce-client/hadoop-mapreduce-client-core/mapred-default.xml
5yarn-site.xml
?xml version1.0?
configuration property nameyarn.nodemanager.aux-services/name valuemapreduce_shuffle/value /property property nameyarn.nodemanager.aux-services.mapreduce.shuffle.class/name valueorg.apache.hadoop.mapred.ShuffleHandler/value /property propertynameyarn.resourcemanager.scheduler.address/name valuehadoop01:8030/value /property property nameyarn.resourcemanager.resource-tracker.address/name valuehadoop01:8025/value /propertyproperty nameyarn.resourcemanager.address/namevaluehadoop01:8040/value/property
/configuration
yarn-site.xml的完整参数请参考 http://hadoop.apache.org/docs/r2.6.0/hadoop-yarn/hadoop-yarn-common/yarn-default.xml
6slaves
执行命令
gedit slaves
编辑该文件输入
hadoop02
hadoop03
这样只有hadoop02hadoop03上有datanode进程。
hadoop 1.x与2.x相比, 1.x中的很多参数已经被标识为过时,具体可参考 http://hadoop.apache.org/docs/r2.6.0/hadoop-project-dist/hadoop-common/DeprecatedProperties.html
7修改/etc/profile设置环境变量
执行命令
sudo gedit /etc/profile
打开/etc/profile,添加hadoop配置内容。注意CLASSPATH,PATH是在原来的配置项上添加hadoop的包路径
export HADOOP_HOME/home/mk/soft/hadoop-2.6.0
export CLASSPATH.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH:$HADOOP_HOME/share/hadoop/common/hadoop-common-2.6.0.jar:$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-core-2.6.0.jar:$HADOOP_HOME/share/hadoop/common/lib/commons-cli-1.2.jar
export PATH$JAVA_HOME/bin:$JRE_HOME/bin:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$PATH
使profile文件修改配置生效
source /etc/profile
8分发到集群的其它机器
把hadoop-2.6.0文件夹连同修改后的配置文件通过scp拷贝到其它2台机器上。
执行命令
scp -r /home/mk/soft/hadoop-2.6.0/ mkhadoop02:/home/mk/soft/hadoop-2.6.0
scp -r /home/mk/soft/hadoop-2.6.0/ mkhadoop03:/home/mk/soft/hadoop-2.6.0
hadoop02、hadoop03上的hadoop临时目录(tmp)及数据目录(data)仍然要先手动创建。
9测试hadoop配置
在hadoop01上启用 NameNode测试 执行命令
hdfs namenode -format
先格式化 15/02/12 21:29:53 INFO namenode.FSImage: Allocated new BlockPoolId: BP-85825581-192.168.187.102-1423747793784 15/02/12 21:29:53 INFO common.Storage: Storage directory /home/hadoop/tmp/dfs/name has been successfully formatted. 等看到执行信息有has been successfully formatted表示格式化ok 四、启动hadoop集群
1启动HDFS
执行命令
HADOOP_HOME/sbin/start-dfs.sh
启动完成后输入jps查看进程
执行命令
jps
2283 NameNode
如果看到上面NameNode进程,表示hadoop01节点成功
2启动yarn
执行命令
start-yarn.sh
jps
4363 ResourceManager
2283 NameNode
如果看到上面2个进程表示 yarn启动完成。
3停止
执行命令
stop-dfs.sh
stop-yarn.sh
保存退出停掉刚才启动的服务 五、测试Hadoop服务
1hadoop01节点上重新启动 执行命令
start-dfs.sh
start-yarn.sh
hadoop01节点上有几下2个进程 3421 ResourceManager 3412 NameNode
hadoop02上有几下3个进程
3214 SecondaryNameNode 3243 DataNode 3249 NodeManager
hadoop03上有几下2个进程 2324 DataNode 2342 NodeManager
2web界面检查hadoop
hdfs管理界面 http://hadoop01:50070/ yarn的管理界面不再是原来的50030端口而是8088 http://hadoop01:8088/ 3查看hadoop状态 hdfs dfsadmin -report 查看hdfs的状态报告 yarn node -list 查看yarn的基本信息 六、其他问题
1.若namenode上的core-site.xml中的fs.defaultFS缺失则启动时会报错。
2.若各机器上的yarn-site.xml中的yarn.resourcemanager.resource-tracker.address缺失 虽然resourcemanager与nodemanager进程能够正常启动但是在执行yarn node -list会出现node数量为0的情况。 2.若各机器上的yarn-site.xml中的yarn.resourcemanager.scheduler.address或yarn.resourcemanager.address缺失则在运行job时 会卡在INFO mapreduce.Job: Job job_1422695884569_0001 running in uber mode : false
七、使用hadoop集群运行例子
同样的例子比单机模式时间长
1运行自带mapreduce例子grep 执行命令
hadoop fs -mkdir /input
hadoop fs -put $HADOOP_HOME/etc/hadoop/*.xml /input
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar grep /input /output dfs[a-z.]
hadoop fs -get /output /home/hadoop/output查看结果
cat output/*
1 dfsadmin 得到和单机一样的结果dfs只出现一次
2运行自带mapreduce例子wordcount words.txt hello liuchengwu hello liulao hello dora hello liu hello hadoop 文件拷入/words.txt下 执行命令
hadoop fs -put /hpme/mk/words.txt /words.txt
hadoop jar $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-2.6.0.jar wordcount
/words.txt /count1
hadoop fs -cat /count1/* 参考文档Hadoop MapReduce Next Generation - Cluster Setup