HADOOP集群搭建
一、配置服务器
1个主节点:master(192.168.100.31)
2个(从)子节点:slaver1(192.168.100.32),slaver2(192.168.100.33)
配置主节点(192.168.100.31):
vi /etc/sysconfig/network
添加内容(如果有则不用添加):
NETWORKING=yes
HOSTNAME=master
配置两台子节点名(192.168.100.32)和(192.168.100.33)(如果有则不用添加):
(192.168.100.32)
vi /etc/sysconfig/network
添加内容:
NETWORKING=yes
HOSTNAME=slaver1
(192.168.100.33)
vi /etc/sysconfig/network
添加内容:
NETWORKING=yes
HOSTNAME=slaver2
二、配置hosts
打开主节点的hosts文件,要将文件的前两行注释掉 (注释当前主机的信息)并在文件中添加所有hadoop集群的主机信息
vi /etc/hosts
192.168.100.31 master
192.168.100.32 slaver1
192.168.100.33 slaver2
保存之后,将主节点的hosts分别拷贝到其他两个子节点
scp /etc/hosts root@192.168.100.32:/etc/
scp /etc/hosts root@192.168.100.33:/etc/
然后分别执行(重启服务器也可以不执行下面的语句): /bin/hostsname hostsname
例如:master上执行 /bin/hostname master,使之生效
三、配置ssh无密码访问生成公钥密钥对在每个节点上分别执行:
ssh-keygen -t rsa
一直按回车直到生成结束
执行结束之后每个节点上的/root/.ssh/目录下生成了两个文件 id_rsa 和 id_rsa.pub。其中前者为私钥,后者为公钥。
在主节点上执行:
cp id_rsa.pub authorized_keys将子节点的公钥拷贝到主节点并添加进authorized_keys
将两个子节点的公钥拷贝到主节点上,分别在两个子节点上执行:
scp ~/.ssh/id_rsa.pub root@master:~/.ssh/id_rsa_slaver1.pub(目录)
scp ~/.ssh/id_rsa.pub root@master:~/.ssh/id_rsa_slaver2.pub(目录)
然后在主节点上,将拷贝过来的两个公钥合并到authorized_keys文件中去
主节点上执行:
cat id_rsa_slaver1.pub>> authorized_keys
cat id_rsa_slaver2.pub>> authorized_keys
四、验证配置是否成功
在master上分别执行
ssh slaver1
ssh slaver2
能正确跳转到两台子节点的操作界面即可,同样在每个子节点通过相同的方式登录主节点和其他子节点也能无密码正常登录就表示配置成功。
将主节点的authorized_keys文件分别替换子节点的authorized_keys文件
主节点上用scp命令将authorized_keys文件拷贝到子节点的相应位置
scp authorized_keys root@slaver1:/root/.ssh/
scp authorized_keys root@slaver2:/root/.ssh/
执行完之后再次运行ssh命令实现无密码访问(至此无密访问结束)
五、安装JDK(上传压缩包并进行解压)
jdk-8u141-linux-x64.tar.gz
解压:
tar -zxvf /opt/fi_client/JDK/jdk-8u141-linux-x64.tar.gz
六、配置环境变量并生效
vi /etc/profile
在profile文件末尾添加以下代码:
export JAVA_HOME=/opt/fi_client/JDK/jdk1.8.0_141
export JRE_HOME=$JAVA_HOME/jre
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib
文件生效:
source /etc/profile
测试是否安装成功:
java -version、javac、java
七、上传HADOOP压缩包并进行解压
在master主机上安装hadoop(每个节点都要安装)
hadoop-2.7.3.tar.gz
解压:tar -zxvf /opt/hadoop/hadoop-2.7.3.tar.gz
八、配置环境变量并生效
vi /etc/profile //直接编辑
在末尾添加:
export HADOOP_HOME=/opt/fi_client/HDFS/hadoop-2.7.3
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
环境变量(profile)生效:
source /etc/profile
九、配置hadoop配置文件
需要配置的文件位置为/opt/fi_client/HDFS/hadoop-2.7.3/etc/hadoop,需要修改的有以下几个
注:/opt/fi_client/HDFS指的是hadoop的自定义路径
hadoop-env.sh //运行环境配置JDK、JVM等配置
yarn-env.sh //运行环境配置JDK、JVM等配置
core-site.xml //hadoop各组件配置文件
hdfs-site.xml //hadoop各组件配置文件
mapred-site.xml //hadoop各组件配置文件
yarn-site.xml //hadoop各组件配置文件
slaves //子节点配置(里面写入所有子节点的hostname)
其中 hadoop-env.sh和yarn-env.sh里面都要添加jdk的环境变量:
hadoop-env.sh中:
# The java implementation to use.
export JAVA_HOME=/opt/fi_client/JDK/jdk1.8.0_141
yarn-env.sh中:
# some Java parameters
export JAVA_HOME=/opt/fi_client/JDK/jdk1.8.0_141
core-site.xml中:
<configuration>
<property>
<!--主节点hostname-->
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
<property>
<name>io.file.buffer.size</name>
<value>131072</value>
</property>
<property>
<name>hadoop.tmp.dir</name>
<value>file:/usr/temp</value>
</property>
<property>
<name>hadoop.proxyuser.root.hosts</name>
<value>*</value>
</property>
<property>
<name>hadoop.proxyuser.root.groups</name>
<value>*</value>
</property>
</configuration>
hdfs-site.xml中:
<configuration>
<property>
<!--主节点的hostname-->
<name>dfs.namenode.secondary.http-address</name>
<value>master:9001</value>
</property>
<property>
<!--主节点的文件保存目录-->
<name>dfs.namenode.name.dir</name>
<value>file:/usr/dfs/name</value>
</property>
<property>
<!--子节点文件数据的本地保存目录-->
<name>dfs.datanode.data.dir</name>
<value>file:/usr/dfs/data</value>
</property>
<property>
<!--hdfs副本的数量,不要超过子节点的数量-->
<!--默认是3-->
<name>dfs.replication</name>
<value>2</value>
</property>
<property>
<name>dfs.webhdfs.enabled</name>
<value>true</value>
</property>
<property>
<name>dfs.permissions</name>
<value>false</value>
</property>
<property>
<name>dfs.web.ugi</name>
<value>supergroup</value>
</property>
</configuration>
mapred-site.xml中:
//此文件不存在,用cp命令复制一份,原文件仍存在命令:
cp mapred-site.xml.template mapred-site.xml
<configuration>
<property>
<name>mapreduce.framework.name</name>
<value>yarn</value>
</property>
<property>
<!-- hostname-->
<name>mapreduce.jobhistory.address</name>
<value>master:10020</value>
</property>
<property>
<!-- hostname-->
<name>mapreduce.jobhistory.webapp.address</name>
<value>master:19888</value>
</property>
</configuration>
yarn-site.xml中:
<configuration>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
<property>
<name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
<value>org.apache.hadoop.mapred.ShuffleHandler</value>
</property>
<property>
<!-- hostname-->
<name>yarn.resourcemanager.address</name>
<value>master:8032</value>
</property>
<property>
<!-- hostname-->
<name>yarn.resourcemanager.scheduler.address</name>
<value>master:8030</value>
</property>
<property>
<!-- hostname-->
<name>yarn.resourcemanager.resource-tracker.address</name>
<value>master:8031</value>
</property>
<property>
<!-- hostname-->
<name>yarn.resourcemanager.admin.address</name>
<value>master:8033</value>
</property>
<property>
<!-- hostname-->
<name>yarn.resourcemanager.webapp.address</name>
<value>master:8088</value>
</property>
</configuration>
slaves中(此文件中没有localhost):
slaver1
slaver2
Master
十、拷贝hadoop安装文件到子节点
主节点执行
scp -r /usr/hadoop-2.6.4 root@slaver1:/usr //加上-r表示递归,注意路径
scp -r /usr/hadoop-2.6.4 root@slaver2:/usr //加上-r表示递归,注意路径
拷贝profile到子节点(主节点执行)
scp /etc/profile root@slaver1:/etc/
scp /etc/profile root@slaver2:/etc/
在两个子节点上分别使新的profile生效:
source /etc/profile
十一、格式化namenode
主节点上进入hadoop目录(etc下面的hadoop)
然后执行:
./bin/hadoop namenode –format //自己手敲上去
新版本用下面的语句不用hadoop命令了
./bin/hdfs namenode –format //格式化
如果已经配置过环境变量,则使用 hdfs namenode –format
提示:successfully formatted表示格式化成功 //倒数第六个INFO
十二、启动(终止)hadoop
主节点上在hadoop的sbin目录中执行:
./start-all.sh 或者 start-all.sh //启动整个集群
./start-dfs.sh 或者 start-dfs.sh //启动dfs
./start-yarn.sh 或者 start-yarn.sh //启动yarn
./sbin/stop-all.sh 或者 stop-all.sh //终止整个集群
./stop-dfs.sh 或者 stop-dfs.sh //终止dfs
./stop-yarn.sh 或者 stop-yarn.sh //终止yarn
hadoop集群正常启动后:
主节点上jps进程有:
NameNode
DataNode
SecondaryNameNode
ResourceManager
NodeManager
子节点上的jps进程有:
DataNode
NodeManager
如果这样表示hadoop集群配置成功
hdfs范畴:namenode、datanode、secondarynamenode
yarn范畴:ResourceManager、NodeManager