**hadoop搭建集群**

1、关闭防火墙 1)查看防火墙状态 firewall-cmd --state 2)停止firewall systemctl stop firewalld.service 3)禁止firewall开机启动 systemctl disable firewalld.service 2、时间同步 命令行输入:yum install ntp 下载ntp插件 , 下载完成后 命令行输入:ntpdate -u ntp1.aliyun.com 然后命令行输入:date 如果出现如下情况表示配置成功: 3、配置服务器(我这里是以4台为例) 1个主节点:doop1(192.168.0.103),2个(从)子节点,doop2(192.168.0.104),doop3(192.168.0.105),doop4(192.168.0.106) 2、配置主节点名(192.168.0.103) 在命令行输入: vi /etc/sysconfig/network 添加内容: NETWORKING=yes HOSTNAME=doop1 配置三台子节点名(192.168.0.104),(192.168.0.105),(192.168.0.106): vi /etc/sysconfig/network 添加内容: NETWORKING=yes HOSTNAME=doop2 vi /etc/sysconfig/network 添加内容: NETWORKING=yes HOSTNAME=doop3 vi /etc/sysconfig/network 添加内容: NETWORKING=yes HOSTNAME=doop4 4、配置hosts 打开主节点的hosts文件,将文件的前两行注释掉 (注释当前主机的信息)并在文件中添加所有hadoop集群的主机息。 在命令行输入: vi /etc/hosts 添加3台服务器的节点名信息 192.168.0.103 doop1 192.168.0.104 doop2 192.168.0.105 doop3 192.168.0.106 doop4 保存之后,将主节点的hosts分别拷贝到其他两个子节点 命令行分别输入: scp /etc/hosts root@192.168.0.104:/etc/ scp /etc/hosts root@192.168.0.105:/etc/ scp /etc/hosts root@192.168.0.106:/etc/ 然后分别执行(重启服务器也可以不执行下面的语句): /bin/hostname hostsname 5、配置ssh无密码访问 生成公钥密钥对 在每个节点上分别执行: 命令行输入:ssh-keygen -t rsa 一直按回车直到生成结束 执行结束之后每个节点上的/root/.ssh/目录下生成了两个文件 id_rsa 和 id_rsa.pub 其中前者为私钥,后者为公钥 在主节点上执行: scp /root/.ssh/id_rsa.pub root@doop2:/root/.ssh/ scp /root/.ssh/id_rsa.pub root@doop3:/root/.ssh/ scp /root/.ssh/id_rsa.pub root@doop4:/root/.ssh/ 在xshell窗口的全部会话输入下面命令: cd /root/.ssh/ cp id_rsa.pub authorized_keys 最后测试是否配置成功 在doop1上分别执行 ssh doop2 ssh doop3 能正确跳转到两台子节点的操作界面即可,同样在每个子节点通过相同的方式登录主节点和其他子节点也能无密码正常登录就表示配置成功。 6、安装jdk(四台机器都要安装) 安装在同一位置**/usl/local/jdk1.8.0_191** 下载JDK : https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 解压JDK : tar -zxvf /usr/local/jdk-8u73-linux-x64.gz 配置环境变量, 编辑profile文件: vi /etc/profile 在profile文件末尾添加以下代码: export JAVA_HOME=/usr/local/jdk1.8.0_191 export PATH=$JAVA_HOME/bin:$PATH export CLASSPATH=$JAVA_HOME/lib:$JAVA_HOME/jre/lib 保存后,使刚才编辑的文件生效:source /etc/profile 测试是否安装成功:java -version 7、安装hadoop 安装位置自定,例如安装在/usr/local目录下面 下载hadoop包: https://www.apache.org/dyn/closer.cgi/hadoop/common/hadoop-2.7.7/hadoop-2.7.7.tar.gz 放在/usr/local目录下,解压hadoop tar -zxvf hadoop-2.7.7.tar.gz 在usr下面生成hadoop-2.7.7目录 配置环境变量: vi /etc/profile 在末尾添加: export HADOOP_HOME=/usr/local/hadoop-2.7.7 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin 保存后使新编辑的profile生效: source /etc/profile 8、配置hadoop 配置hadoop配置文件 需要配置的文件的位置为/usr/local/hadoop-2.7.7/etc/hadoop,需要修改的有以下几个文件: hadoop-env.sh yarn-env.sh core-site.xml hdfs-site.xml mapred-site.xml yarn-site.xml slaves masters 其中hadoop-env.sh和yarn-env.sh里面都要添加jdk的环境变量 hadoop-env.sh中 添加如下代码: export JAVA_HOME=/usr/local/jdk1.8.0_191 到如下位置: yarn-env.sh中 添加如下代码: export JAVA_HOME=/usr/local/jdk1.8.0_191 到如下位置: core-site.xml中 添加如下代码: <configuration> <!--数据传输端口--> <property> <name>fs.defaultFS</name> <value>hdfs://doop1:9000</value> </property> <property> <name>io.file.buffer.size</name> <value>131072</value> </property> <!--hadoop临时目录,fsimage临时文件也会存在这个目录,数据不能丢--> <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> 注:上面代码中file后的路径下的temp文件夹需要自己创建 hdfs-site.xml中 添加如下代码: <configuration> <!--secondary namenode配置--> <property> <name>dfs.namenode.secondary.http-address</name> <value>doop4:50090</value> </property> <property> <name>dfs.namenode.secondary.https-address</name> <value>doop4:50091</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> <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> slaves中配置DataNode主机名 修改成: doop2 doop3 doop4 masters中配置SecondaryNameNode主机名 修改成: doop4 mapred-site.xml中 (注意要将mapred-site.xml.template重命名为 .xml的文件 mv 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>doop1:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>doop1: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> <name>yarn.resourcemanager.address</name> <value>doop1:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>doop1:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>doop1:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>doop1:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>doop1:8088</value> </property> </configuration> 拷贝hadoop安装文件到子节点 主节点上执行: rm -rf /usr/local/hadoop-2.7.7/share/doc/ scp -r /usr/local/hadoop-2.7.7 root@doop2:/usr/local/ scp -r /usr/local/hadoop-2.7.7 root@doop3:/usr/local/ scp -r /usr/local/hadoop-2.7.7 root@doop4:/usr/local/ 拷贝profile到子节点 主节点上执行: scp /etc/profile root@doop2:/etc/ scp /etc/profile root@doop3:/etc/ scp /etc/profile root@doop4:/etc/ 在三个子节点上分别使新的profile生效: source /etc/profile

配置Hadoop环境变量 vi ~/.bash_profile 在末尾添加: export HADOOP_HOME=/usr/local/hadoop-2.7.7 export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

scp ~/.bash_profile root@doop2:/root/ scp ~/.bash_profile root@doop3:/root/ scp ~/.bash_profile root@doop4:/root/ 加载配置 source ~/.bash_profile

格式化主节点的namenode 主节点上进入hadoop目录然后执行: hdfs namenode -format 提示:successfully formatted表示格式化成功

启动hadoop 主节点上在hadoop目录下执行: start-all.sh 停止hadoop stop-all.sh

主节点上jps进程如下: NameNode ResourceManager 每个子节点上的jps进程如下: DataNode NodeManager doop会多个进程 SecondaryNameNode 如果这样表示hadoop集群配置成功

访问地址http://192.168.0.103:50070/ 如果想通过主机名访问,需配置windows的host文件 然后看下页面