安装hadoop
安装必备库
$ sudo apt-get install ssh
$ sudo apt-get install rsync
$ sudo apt-get install openjdk-8-jdk
安装hadoop
$ wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.9.0/hadoop-2.9.0.tar.gz
$ tar -zxvf hadoop-2.9.0.tar.gz
$ sudo mv hadoop-2.9.0 /opt/hadoop
$ cd /opt/hadoop
常用的配置文件
etc/hadoop/core-site.xml
etc/hadoop/hdfs-site.xml
etc/hadoop/yarn-site.xml
etc/hadoop/mapred-site.xml
集群设置
假设主服务器地址为(192.168.71.156 namenode),从服务器地址为(192.168.71.158 datanode1)。
注意:这个Hadoop集群啊,不能使用IP在slaves里面,所以最好服务器都有名字
# 修改hosts文件,主和从服务器都改
$ sudo vim /etc/hosts
""
192.168.71.156 namenode
192.168.71.158 datanode1
""
设置SSH互通
# 生成ssh公钥
> ssh-keygen -t rsa
# 把从服务器的公钥发到主服务器
> scp /home/hdgs/.ssh/id_rsa.pub hdgs@namenode:~/.ssh/id_rsa.pub.158
# 在主服务器上面设置authorize_key
> cat ~/.ssh/id_rsa.pub* >> ~/.ssh/authorized_keys
# 把主服务器的key发送到从服务器上
> scp /home/hdgs/.ssh/authorized_keys hdgs@datanode1:~/.ssh/
# 测试ssh
> ssh datanode1
设置JAVA_HOME
$ sudo vim etc/hadoop/hadoop-env.sh
""
export JAVA_HOME="/usr/lib/jvm/java-1.8.0-openjdk-amd64"
""
配置core-site.xml
修改Hadoop核心配置文件core-site.xml,这里配置主节点namenode的地址和端口号
> vim /opt/hadoop/etc/hadoop/core-site.xml
加入如下配置:
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://namenode:9000</value>
</property>
</configuration>
配置hdfs-site.xml
# 创建数据文件夹
$ mkdir /opt/hadoop/namenode
$ mkdir /opt/hadoop/datanode
> vim /opt/hadoop/etc/hadoop/hdfs-site.xml
加入如下配置:
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/opt/hadoop/namenode</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/opt/hadoop/datanode</value>
</property>
<!-- 设置namenode的http通讯地址 -->
<property>
<name>dfs.namenode.http-address</name>
<value>namenode:50070</value>
</property>
<!-- 设置secondarynamenode的http通讯地址 -->
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>datanode1:50090</value>
</property>
</configuration>
配置yarn-site.xml
$ sudo vim etc/hadoop/yarn-site.xml
""
<configuration>
<!-- 设置 resourcemanager 在哪个节点-->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>namenode</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
""
配置mapred-site.xml
$ sudo cp etc/hadoop/mapred-site.xml.template etc/hadoop/mapred-site.xml
$ sudo vim etc/hadoop/mapred-site.xml
""
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
</configuration>
""
配置slaves
$ vim etc/hadoop/slaves
""
datanode1
""
hadoop文件夹分发
分发hadoop
将主服务器上配置好的hadoop文件夹分发到所有的从服务器上面。
# 确保从服务器已经存在文件夹
> sudo mkdir /opt/hadoop
> sudo chmod -R 777 /opt/hadoop/
# ccnu_resource为<cluster_name>,随便定吧
$ rm -rf namenode/*
$ rm -rf datanode/*
$ bin/hdfs namenode -format ccnu_resource
> scp -r /opt/hadoop hdgs@datanode1:/opt/
启动
> sbin/start-dfs.sh
> sbin/start-yarn.sh
$ jps
# master
""
21298 Jps
21027 ResourceManager
20724 NameNode
""
# node
""
12656 NodeManager
12418 DataNode
12811 Jps
12557 SecondaryNameNode
""
Web:
http://192.168.71.156:50070/
http://192.168.71.156:8088/cluster
关闭
> ./sbin/stop-dfs.sh
> ./sbin/stop-yarn.sh
解决问题的方案
Incompatible clusterIDs in /opt/hadoop/datanode
# 主和从服务器都执行
$ rm -rf namenode/*
$ rm -rf datanode/*
# 主服务器执行
$ bin/hdfs namenode -format ccnu_resource
Datanode denied communication with namenode because hostname cannot be resolved
修改hosts文件,主从都修改,下面的例子是主服务的配置
192.168.71.158 localhost