Hadoop 2.7.3 集群搭建及配置
全程不推荐使用 root 操作,我采用的用户名是 junbaor
环境
OpenJDK-1.8
Hadoop 2.7.3
Ubuntu Server 17.04 (三台)
环境准备
安装 VMware Workstation
下载 Ubuntu Server 镜像
地址: https://mirrors.aliyun.com/ub...安装过程自行解决,注意网络连接方式选择桥接, 不要复制物理主机网络
安装完成后克隆出另外两台, 选择完全克隆
分别修改每台虚拟机的主机名, 编辑
/etc/hostname
,完成后重启生效修改所有主机的
/etc/hosts
文件, 不需要动 ipv6 部分
例如:
127.0.0.1 localhost 192.168.31.129 server-1 192.168.31.246 server-2 192.168.31.51 server-3
安装 jdk
sudo apt install openjdk-8-jdk -y
执行 java -version
可以看到版本号,
安装目录在/usr/lib/jvm/java-8-openjdk-amd64
, 记下待会儿会用到
下载 Hadoop
wget http://mirrors.ustc.edu.cn/apache/hadoop/common/stable2/hadoop-2.7.3.tar.gz tar zxvf hadoop-2.7.3.tar.gz cd hadoop-2.7.3
配置免密码登录
cd ~/.ssh ssh-keygen -t rsa
一直按回车,目录会生成 id_rsa 和 id_rsa.pub 文件
cat id_rsa.pub >> ./authorized_keys
需要把 id_rsa 和 authorized_keys 复制到其他子节点, 我们使用 scp 命令同步
scp id_rsa server-2:~/.ssh/ scp id_rsa server-3:~/.ssh/ scp authorized_keys server-2:~/.ssh/ scp authorized_keys server-3:~/.ssh/
分别在每台主机上连接其他主机
例如在 server-1 上
ssh server-2
询问授权时输入Y, 如果能连入, 使用 exit
命令退出, 继续尝试其他主机,直到集群中的所有主机可以两两相通
2017年6月20日补充:可以修改 ssh 的 StrictHostKeyChecking no
配置达到连接新主机不需要输入 Y 验证的目的.
配置 Hadoop
配置 JAVA_HOME
进入到 hadoop-2.7.3 的 /etc/hadoop/ 目录, 编辑 hadoop-env.sh
文件
找到 JAVA_HOME 改为 JDK 的安装目录
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64
修改 slaves
将 localhost 删除, 填入两个从节点的主机名
server-2 server-3
修改 core-site.xml
<configuration> <property> <name>fs.defaultFS</name> <value>hdfs://server-1:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/home/junbaor/hadoop/tmp</value> </property> </configuration>
修改 hdfs-site.xml
<configuration> <property> <name>dfs.namenode.secondary.http-address</name> <value>server-1:50090</value> </property> <property> <name>dfs.replication</name> <value>2</value> </property> <property> <name>dfs.namenode.name.dir</name> <value>file:/home/junbaor/tmp/dfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/home/junbaor/tmp/dfs/data</value> </property> </configuration>
编辑 mapred-site.xml
目录下么没有这个文件,这有一个模板,我们需要先拷贝一份
cp mapred-site.xml.template mapred-site.xml
然后编辑
<configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>server-1:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>server-1:19888</value> </property> </configuration>
修改 yarn-site.xml
<configuration> <!-- Site specific YARN configuration properties --> <property> <name>yarn.resourcemanager.hostname</name> <value>server-1</value> </property> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> </configuration>
复制到从节点
将 hadoop-2.7.3 文件夹重打包后复制到其他子节点
tar zcvf hadoop.tar.gz hadoop-2.7.3 scp hadoop.tar.gz server-2:/home/junbaor/ scp hadoop.tar.gz server-3:/home/junbaor/
然后在各子节点解压, 推荐集群中所有的文件目录结构保持一致
启动
启动停止操作只在主节点执行即可
首次启动需要先在 Master 节点执行 NameNode 的格式化:
cd 到 hadoop-2.7.3/bin 目录下,执行 ./hdfs namenode -format
然后就可以启动 hadoop
cd 到 hadoop-2.7.3/sbin 目录
./start-dfs.sh ./start-yarn.sh ./mr-jobhistory-daemon.sh start historyserver
查询状态
可以通过 jps 命令查看 java 进程, 缺少以下任一进程都表示出错
#主节点执行结果: NameNode、ResourceManager、SecondrryNameNode、JobHistoryServer #从节点执行结果: DataNode、NodeManager
如果主机点缺少 NameNode 请检查是否执行了 NameNode 的格式化或者检查各节点的 NameNode 日志
另外还需要在主节点上通过 bin 下的 ./hdfs dfsadmin -report
命令查看 DataNode 是否正常启动,如果 Live datanodes 不为 0 ,则说明集群启动成功
也可以通过 Web 页面看到查看 DataNode 和 NameNode 的状态:http://server-1:50070
或者通过 http://server-1:8088 查看集群状态