注:本文中提到的ochadoop 不要感到奇怪,是亚信公司内部自己合成的一个包,把所有的组件都放在一个包内了,免去了组件的下载过程和解决兼容问题,其实也可以自己下载的,不要受到影响。
另,转载请注明出处,谢谢
在 /etc/sysconfig/network-scripts/ifcfg-eth0配置IPADDR地址
运行以下命令生效
service network restart |
在/etc/sysconfig/network中配置hostname配置完成后重启生效
在Master节点上执行以下命令:
ssh-keygen –t rsa –P '' |
生成的密钥对:id_rsa和id_rsa.pub,默认存储在"/home/hadoop/.ssh"目录下。
接着在Master节点上做如下配置,把id_rsa.pub追加到授权的key里面去。
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys |
在验证前,需要做两件事儿。第一件事儿是修改文件"authorized_keys"权限(权限的设置非常重要,因为不安全的设置安全设置,会让你不能使用RSA功能),另一件事儿是用root用户设置"/etc/ssh/sshd_config"的内容。使其无密码登录有效。
修改文件"authorized_keys"
chmod 600 ~/.ssh/authorized_keys |
用root用户登录服务器修改SSH配置文件"/etc/ssh/sshd_config"的下列内容。
RSAAuthentication yes #启用 RSA认证 PubkeyAuthentication yes #启用公钥私钥配对认证方式 AuthorizedKeysFile .ssh/authorized_keys #公钥文件路径(和上面生成的文件同) |
设置完之后记得重启SSH服务,才能使刚才设置有效。
service sshd restart |
接下来的事儿是把公钥复制所有的Slave机器上。使用下面的命令格式进行复制公钥:
scp ~/.ssh/id_rsa.pub远程用户名@远程服务器IP:~/
在"/home/hadoop/"下创建".ssh"文件夹
chmod 700 ~/.ssh |
到目前为止Master的公钥也有了,文件夹".ssh"也有了,且权限也修改了。这一步就是把Master的公钥追加到Slave1的授权文件"authorized_keys"中去。使用下面命令进行追加并修改"authorized_keys"文件权限:
cat ~/id_rsa.pub >> ~/.ssh/authorized_keys chmod 600 ~/.ssh/authorized_keys |
用root用户修改"/etc/ssh/sshd_config"
具体步骤参考前面的"设置SSH配置",具体分为两步:第1是修改配置文件;第2是重启SSH服务。
测试Master使用SSH无密码登录Slave1
ssh远程服务器IP |
在 etc/hadoop/slaves加入datanode机器的hostname
w-cs-datanode01 w-cs-datanode02 w-cs-datanode02 |
以下操作方式使用该新建的用户进行操作。注:下以出现的csbd为当前新建的账号
http://210.14.153.178:9081/download/OCHadoop/V4.0.1/ochadoop-och4.0.1.tar.gz
下载前请确认安装的版本号,该包包含有hadoop,zookeeper,hive,Hbase,spark等组件。
解压:tar zxvf jdk-7u75-linux-x64.tar.gz -C /home/csbd/java-1.7.0
配置环境变量:vim /etc/profile
export JAVA_HOME=/home/csbd/jdk1.7.0_75 export JRE_HOME=${JAVA_HOME}/jre export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib export PATH=${JAVA_HOME}/bin:$PATH |
生效:
source /etc/profile |
还有一些环境变量像HADOOP_HOME,HIVE_HOME,ZOOKEEPER_HOME等都可以先配置了
在etc/hadoop目录下hadoop-env.sh和 yarn-env.sh把Java_home给配置上
|
|
注:yarn-site.xml在两个运行resourceManager的节点上一定要修改yarn.resourcemanager.ha.id中的值为当前机器的映射!
|
|
下载zookeeper的tar包,解压
首先建立zookeeper的数据目录,比如:
mkdir -p /opt/hadoop/data/zookeeper |
同时建立日志存放目录:
mkdir –p /opt/hadoop/logs/zookeeper |
在$ZOO_HOME/conf下创建配置文件:
touch zoo.cfg |
在zoo.cfg文件是加入以下配置:
tickTime=2000 dataDir=/opt/hadoop/data/zookeeper clientPort=2181 initLimit=5 syncLimit=2 server.1=192.168.17.14:31316:31317 server.2=192.168.17.15:31316:31317 server.3=192.168.17.16:31316:31317 |
在三台服务器的目录/opt/hadoop/data/zookeeper下分别创建一个叫myid的文件,内容分别是1,2,3,如:
#在192.168.17.14上执行如下命令
echo 1 >/opt/hadoop/data/zookeeper/myid |
#在192.168.17.15上执行如下命令
echo 2 >/opt/hadoop/data/zookeeper/myid |
#在192.168.17.16上执行如下命令
echo 3 >/opt/hadoop/data/zookeeper/myid |
最后就是分别启动zookeeper服务了:
./bin/zkServer.sh start |
通过jps命令可以检查是否启动成功:
hd@hd0:/opt/hadoop/apps/zookeeper-3.4.5$jps
1239 QuorumPeerMain
看到QuorumPeerMain进程就表示zookeeper启动成功了。
测试zookeeper集群是否建立成功,在$ZOO_HOME目录下执行以下命令即可,如无报错表示集群创建成功:
./bin/zkCli.sh -server localhost:31315 |
查看状态:
$ zkServer.sh status JMX enabled by default Using config: /home/yarn/Zookeeper/zookeeper-3.4.6/bin/../conf/zoo.cfg Mode: follower 表示当前这个机器上是从状态 |
在任意一个节点格式化ZK
hdfs zkfc -formatZK |
仅在主备NN节点上启动就行:
hadoop-daemon.sh start zkfc |
启动后我们可以看到ZKFC进程:
$ jps |
在主nameNode上进行格式化:(注:只用主Namenode格式化,备Namenode不用格式化,备NN需要做一下同步就行,不然会造成两个namenode的VERSION不一致,解决的办法是查看日志,按照提示的两个不一致的id进行替换就行了(一般会有namespaceId和clusterId不一致,报哪个替换哪个就行))
在所有的ZK节点执行命令:
zkServer.shstart
查看从属关系
zkServer.shstatus
JMX enabledby default
Usingconfig: /home/yarn/Zookeeper/zookeeper-3.4.6/bin/../conf/zoo.cfg
Mode: follower
注意:
哪个ZK节点会成为leader是随机的,第一次实验时slave2成为了leader,第二次实验时slave1成为了leader!
此时,在各个节点都可以查看到ZK进程:
jps
3084 QuorumPeerMain
任意ZK节点上格式化ZK:
hdfs zkfc-formatZK
仅在主备NN节点上启动就行:
hadoop-daemon.shstart zkfc
启动后我们可以看到ZKFC进程:
jps
3084QuorumPeerMain
3292 Jps
3247 DFSZKFailoverController
在各JN上启动:
hadoop-daemon.shstart journalnode
先用子命令启动各进程,便于查看问题,正常以后可以使用 start-dfs.sh start-yarn.sh 或start-all.sh
./bin/hdfsnamenode –format # 格式化namenode
在主nameNode上启动各DN节点:
./sbin/hadoop-daemons.shstart datanode
./sbin/hadoop-daemon.sh--script hdfs start datanode
./sbin/yarn-daemon.shstart resourcemanager
./sbin/yarn-daemon.shstart nodemanager
./sbin/mr-jobhistory-daemon.shstart historyserver
启动主节点上的NN:
hdfs namenode -bootstrapStandby
正常的启动日志如下:
Re-formatfilesystem in Storage Directory /home/yarn/Hadoop/hdfs2.0/name ? (Y or N) Y
14/06/1510:09:08 INFO common.Storage: Storage directory /home/yarn/Hadoop/hdfs2.0/namehas been successfully formatted.
14/06/1510:09:09 INFO namenode.TransferFsImage: Opening connection to http://master:50070/getimage?getimage=1&txid=935&storageInfo=-47:564636372:0:CID-d899b10e-10c9-4851-b60d-3e158e322a62
14/06/1510:09:09 INFO namenode.TransferFsImage: Transfer took 0.11s at 63.64 KB/s
14/06/1510:09:09 INFO namenode.TransferFsImage: Downloaded file fsimage.ckpt_0000000000000000935size 7545 bytes.
14/06/1510:09:09 INFO util.ExitUtil: Exiting with status 0
14/06/1510:09:09 INFO namenode.NameNode: SHUTDOWN_MSG:
/************************************************************
SHUTDOWN_MSG:Shutting down NameNode at slave1/192.168.66.92
************************************************************/
在备NN上启动namenode: hadoop-daemon.shstart namenode
|
首先可以连到两台NameNode查看主备状态
http://192.168.17.14:50070/dfshealth.jsp
http://192.168.17.15:50070/dfshealth.jsp
通过 jps查到主nameNode上的PID,然后使用kill PID 杀死该进行,再查看原来的standBy是否改为active
可以在主NN节点上执行命令激活主NN:
hdfs haadmin -transitionToActive nn1 |
该命令可以将active状态从nn2切换到nn1,让nn2变成active
hdfs haadmin -DfSHAadmin -failover nn2 nn1 |