我是在ubuntu上安装的Hadoop,ubuntu版本14.04和16.04都有,关系不大。使用了3台服务器。
总共安装了2个nameNode,3个dataNode,3个journalNode
下面是安装步骤:
1. 安装JDK:我安装的是1.8。
jdk安装方法,参照以前的: https://blog.csdn.net/redstarofsleep/article/details/45091997
和这个里面有些不同,现在直接下载tar.gz包,解压缩就可以了。环境变量照上面这个配。
2. 修改主机名:
编辑/etc/hostname,修改主机名,每台机器都改成不一样的。改完后再输入hostname查看,会发现没变,改了这个文件是要重启后才会变的。直接执行hostname <主机名>即可。例如将hostname改成server229:
hostname server229
然后修改/etc/hosts,将各机器的ip和主机名配置进去,所以需要配一下:
127.0.0.1 localhost
127.0.1.1 selfserver229
192.168.18.228 server228
192.168.18.225 server225
192.168.18.223 server223
192.168.18.229 server229
192.168.18.226 server226
比如我上面这个,该台机器的ip是192.168.18.229。127.0.0.1和127.0.1.1中两个是本来就有的,其中127.0.1.1和原来hostname里的主机名是一样的,我这里特地改成不一样的。hostname里的主机名配到该机器的物理ip上。
检验是否配置好,ping <主机名>就可以了
3. 安装ssh和rsync
apt-get install ssh
apt-get install rsync
4. 配置ssh免密码登录
因为偷懒,所以用的都是root账户,而现在的ubuntu下,默认都是不让root账户远程ssh登录的。所以首先要开启root账号远程ssh登录, 还是参照以前的文章: https://blog.csdn.net/redstarofsleep/article/details/46787447
$ ssh-keygen -t rsa -P '' -f ~/.ssh/id_rsa
$ cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
$ chmod 0600 ~/.ssh/authorized_keys
注意一下,如果因为懒,把所有机器都用相同的key的话,也是可以的,把生成的id_rsa和id_rsa.pub拷贝到其它机器的/root/.ssh/下然后生成authorized_keys就可以,但是要注意权限,这三个文件都是只能所有者读写,其它权限都是没有的。也就是上面的最后一条命令,将权限设为0600.
5. 安装zookeeper集群
看之前的文章: https://blog.csdn.net/redstarofsleep/article/details/78593732
好了,终于可以开始安装hadoop了
6. 解压hadoop安装包,我安装的hadoop版本是2.7.4. 安装路径是/usr/local/hadoop/
tar -xzvf hadoop-2.7.4.tar.gz
7. 在hadoop内配置jdk
修改hadoop路径下etc/hadoop目录下的hadoo-env.sh
export JAVA_HOME=/root/training/jdk1.8.0_181
8. 修改core-site.xml
fs.defaultFS
hdfs://nameService1
hadoop.tmp.dir
/usr/local/hadoop/hadoop-2.7.4/tmp
ha.zookeeper.quorum
server229:2181,server229:2182,server225:2181
以上配置中指定了一个临时目录,文件夹不存在的话,需要自己用mkdir创建。zookeeper集群里的ip都用主机名替代了,主机名就是第2步中配在hosts文件里的。
9. 配置hdfs-site.xml
dfs.nameservices
nameService1
dfs.ha.namenodes.nameService1
nameNode1,nameNode2
dfs.namenode.rpc-address.nameService1.nameNode1
server227:9000
dfs.namenode.http-address.nameService1.nameNode1
server227:50070
dfs.namenode.rpc-address.nameService1.nameNode2
server228:9000
dfs.namenode.http-address.nameService1.nameNode2
server228:50070
dfs.namenode.shared.edits.dir
qjournal://server227:8485;server228:8485;server225:8485/nameService1
dfs.journalnode.edits.dir
/usr/local/hadoop/hadoop-2.7.4/journal
dfs.ha.automatic-failover.enabled
true
dfs.client.failover.proxy.provider.nameService1
org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
dfs.ha.fencing.methods
sshfence
shell(/bin/true)
dfs.ha.fencing.ssh.private-key-files
/root/.ssh/id_rsa
dfs.ha.fencing.ssh.connect-timeout
30000
这个配置文件中主要是配置了一个nameservice,这个nameservice就是core-site.xml里指定的那个名字:“nameservice1”,然后这个nameservice下有两个namenode(namenode1和namenode2),即一主一备保证高可用。还配置了journalNode,按照关网要求的journalNode至少要3台。journalNode上还配置了一个文件路径journal,同样,文件夹不存在的话要自己创建。
10. 配置mapred-site.xml
mapreduce.framework.name
yarn
11. 配置yarn-site.xml
yarn.resourcemanager.ha.enabled
true
yarn.resourcemanager.cluster-id
yrc
yarn.resourcemanager.ha.rm-ids
resourceManager1,resourceManager2
yarn.resourcemanager.hostname.resourceManager1
server227
yarn.resourcemanager.hostname.resourceManager2
server228
yarn.resourcemanager.zk-address
server229:2181,server229:2182,server225:2181
yarn.nodemanager.aux-services
mapreduce_shuffle
这主要是配置yarn容器。
12. 配收slave文件
打开slave文件,这个文件是配置从节点的,里面原来有一行localhost,把它注掉。换成3台从节点的域名。
#localhost
server227
server228
server225
13. 将配置文件拷贝到另外两台机器上,因为已经开启了ssh免密登录,所以可以直接用scp命令
scp -r /usr/local/hadoop/hadoop-2.7.3/etc root@server228:/usr/local/hadoop-2.7.3/etc/
14. 启动journalNode
在hadoop目录下的sbin下面执行,上面说了journalNode要3个,所以3台机器上都要执行
./hadoop-daemon.sh start journalnode
15. 格式化HDFS(在主节点上执行),这个命令在bin下
./hdfs namenode -format
然后将/usr/local/hadoop/hadoop-2.7.4/tmp拷贝到从节点的相同目录下
16. 初识化zookeeper,主节点上执行一次就可以了
./hdfs zkfc -formatZK
17. 启动hadoop
start-all.sh
到这边为止hdfs已经可以用了。
18. yarn的resourceManager的从节点需要单独启动一下
yarn-daemon.sh start resourcemanager
hadoop的安装真的很复杂。。。
官网链接:
hdfs的高可用: http://hadoop.apache.org/docs/stable/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html
resourceManager高可用: http://hadoop.apache.org/docs/stable/hadoop-yarn/hadoop-yarn-site/ResourceManagerHA.html
转载请注明出处:https://blog.csdn.net/redstarofsleep/article/details/83024189