本文共 7524 字,大约阅读时间需要 25 分钟。
1. 网络配置
1.1 查看当前机器名称 #hostname 1.2 修改当前机器名称 1.3 修改当前机器IP 1.4 配置hosts文件(必须) 192.168.3.111 hadoopserver01 192.168.3.112 hadoopserver02 192.168.3.113 hadoopserver03 1.5 VSFTP上传 2. SSH无密码验证配置 2.1 SSH无密码原理 Master(NameNode | JobTracker)作为客户端,要实现无密码公钥认证,连接到服务器Salve(DataNode | Tasktracker)上时,需要在Master上生成一个密钥对,包括一个公钥和一个私钥,而后将公钥复制到所有的Slave上。当Master通过SSH连接Salve时,Salve就会生成一个随机数并用Master的公钥对随机数进行加密,并发送给Master。Master收到加密数之后再用私钥解密,并将解密数回传给Slave,Slave确认解密数无误之后就允许Master进行连接了。这就是一个公钥认证过程,其间不需要用户手工输入密码。重要过程是将客户端Master复制到Slave上。 2.2 Master机器上生成密码对 #ssh-keygen –t rsa –P '' 接着在Master节点上做如下配置,把id_rsa.pub追加到授权的key里面去。 #cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys 在验证前,需要做两件事儿。第一件事儿是修改文件"authorized_keys"权限(权限的设置非常重要,因为不安全的设置安全设置,会让你不能使用RSA功能),另一件事儿是用root用户设置"/etc/ssh/sshd_config"的内容。使其无密码登录有效 修改文件"authorized_keys" #chmod 600 ~/.ssh/authorized_keys 设置SSH配置, 用root用户登录服务器修改SSH配置文件"/etc/ssh/sshd_config"的下列内容 #vim /etc/ssh/sshd_conf >RSAAuthentication yes # 启用 RSA 认证 >PubkeyAuthentication yes # 启用公钥私钥配对认证方式 >AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同) 设置完之后记得重启SSH服务,才能使刚才设置有效。 #service sshd restart 使用hadoop普通用户验证是否成功。 #ssh localhost 把公钥复制所有的Slave机器上 #scp ~/.ssh/id_rsa.pub hadoop@192.168.1.3:~/ 在slave"/home/hadoop/"下创建".ssh"文件夹 #mkdir ~/.ssh 修改文件夹".ssh"的用户权限,把他的权限修改为"700" (注意这里是700) #chmod 700 ~/.ssh 追加到授权文件"authorized_keys" #cat ~/id_rsa.pub >> ~/.ssh/authorized_keys #chmod 600 ~/.ssh/authorized_keys 用root用户修改"/etc/ssh/sshd_config" #vim /etc/ssh/sshd_conf >RSAAuthentication yes # 启用 RSA 认证 >PubkeyAuthentication yes # 启用公钥私钥配对认证方式 >AuthorizedKeysFile .ssh/authorized_keys # 公钥文件路径(和上面生成的文件同) 最后记得把"/home/hadoop/"目录下的"id_rsa.pub"文件删除掉 2.3 配置所有Slave无密码登录Master 和Master无密码登录所有Slave原理一样,就是把Slave的公钥追加到Master的".ssh"文件夹下的"authorized_keys"中,记得是追加(>>) 3 Java环境安装 所有的机器上都要安装JDK,现在就先在Master服务器安装,然后其他服务器按照步骤重复进行即可。安装JDK以及配置环境变量,需要以"root"的身份进行 3.1 下载JDK http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html 3.2 首先用root身份登录"Master.Hadoop"后在"/usr"下创建"java"文件夹, #mkdir /usr/java #cp /mnt/hgfs/linux/jdk-8u60-linux-x64.tar.gz /usr/java/ 3.3 配置环境变量, 编辑"/etc/profile"文件,在后面添加Java的"JAVA_HOME"、"CLASSPATH"以及"PATH"内容 #vim /etc/profile ># set java environment >export JAVA_HOME=/usr/java/jdk1.8.0_131/ >export JRE_HOME=/usr/java/jdk1.8.0_131/jre >export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JRE_HOME/lib >export PATH=$PATH:$JAVA_HOME/bin:$JRE_HOME/bin 或者 ># set java environment >export JAVA_HOME=/usr/java/jdk1.8.0_131 >export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib >export PATH=$PATH:$JAVA_HOME/bin:$JAVA_HOME/jre/bin 保存并退出,执行下面命令使其配置立即生效。 #source /etc/profile 3.4 验证安装成功 #java -version 4 Zookeeper安装(3.3.6) Apache ZooKeeper是一个为分布式应用所设计的开源协调服务,其设计目的是为了减轻分布式应用程序所承担的协调任务。它可以为用户提供同步、配置管理、分组和命名等服务 4.1 下载并解压ZooKeeper-3.4.6.tar.gz #cd /opt #tar -zxvf zookeeper-3.4.6.tar.gz #cp zoo_sample.cfg zoo.cfg >dataDir=/data/zookeeper/zkdata >dataLogDir=/data/zookeeper/zkdatalog >server.1=master:2888:3888 >server.2=slave1:2888:3888 >server.3=slave2:2888:3888 #mkdir -p /data/zookeeper/zkdata #mkdir -p /data/zookeeper/zkdatalog #cd /data/zookeeper/zkdata #touch myid #echo "1" > myid 设置日志 #vim conf/log4j.properties ># Define some default values that can be overridden by system properties >zookeeper.root.logger=INFO, ROLLINGFILE ># Add ROLLINGFILE to rootLogger to get log file output ># Log DEBUG level and above messages to a log file >log4j.appender.ROLLINGFILE=org.apache.log4j.DailyRollingFileAppender (暂不做该项修改) #vim bin/zkEvn.sh >if [ "x${ZOO_LOG_DIR}" = "x" ] >then > ZOO_LOG_DIR="$ZOOBINDIR/../logs" >fi >if [ "x${ZOO_LOG4J_PROP}" = "x" ] >then > ZOO_LOG4J_PROP="INFO,ROLLINGFILE" >fi 4.2 从master节点分发文件到其他节点 #scp -r zookeeper-3.4.6 slave1:~/ #scp -r zookeeper-3.4.6 slave2:~/ #scp -r data slave1:~/ #scp -r data slave2:~/ 在slave1节点的/opt/目录, vi ./data/zookeeper/zkdata/myid 修改为 2 在slave2节点的/opt/目录, vi ./data/zookeeper/zkdata/myid 修改为 3 4.3 在每个节点配置环境变量/etc/profile #Set ZOOKEEPER_HOME ENVIRONMENT >export ZOOKEEPER_HOME=/opt/zookeeper >export PATH=$PATH:$ZOOKEEPER_HOME/bin 4.4 启动 关闭防火墙 #sudo ufw disable 在每个节点上$ZOOKEEPER_HOME目录下,运行 (这里的启动顺序为 master > slave1 > slave2 ) #bin/zkServer.sh start 并通过jps可以看到:启动了QuorumpeerMain进程 #jps 并用命令查看启动状态 这里需要注意点,只有当至少启动了三个节点之后,该命令才会产生结果。否则会显示:zookeeper Error contacting service. It is probably not running错误 #bin/zkServer.sh status 5 Hadoop集群安装 5.1 安装hadoop 首先用root用户登录"Master.Hadoop"机器,查看我们之前用FTP上传至"/home/Hadoop"上传的"hadoop-1.0.0.tar.gz" #cp /home/hadoop/hadoop-1.0.0.tar.gz /usr #cd /usr #tar –zxvf hadoop-1.0.0.tar.gz #mv hadoop-1.0.0 hadoop #chown –R hadoop:hadoop hadoop #rm –rf hadoop-1.0.0.tar.gz 最后在"/usr/hadoop"下面创建tmp文件夹,把Hadoop的安装路径添加到"/etc/profile"中,修改"/etc/profile"文件(配置java环境变量的文件),将以下语句添加到末尾,并使其有效 #mkdir /usr/hadoop/tmp #vim /etc/profile ># set hadoop path >export HADOOP_HOME=/usr/hadoop >export PATH=$PATH:$HADOOP_HOME/bin 重启"/etc/profile" #source /etc/profile 5.2 配置hadoop (2.8) 5.2.1 配置hadoop-env.sh 该"hadoop-env.sh"文件位于"/usr/hadoop/conf"目录下, 在文件的末尾添加下面内容 ># set java environment >export JAVA_HOME=/usr/java/jdk1.6.0_31 #vim etc/hadoop/core-site.xml 在<configuration></configuration>中加入 <property> <name>fs.defaultFS</name> <value>hdfs://hadoopserver01:9000</value> </property> <property> <name>hadoop.tmp.dir</name> <value>file:/usr/hadoop/tmp</value> </property> <property> <name>io.file.buffer.size</name> <value>131702</value> </property> <property> <name>hadoop.proxyuser.hadoop.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.hadoop.groups</name> <value>*</value> </property> #vim etc/hadoop/hdfs-site.xml 在<configuration></configuration>中加入 <property> <name>dfs.namenode.name.dir</name> <value>file:/usr/hadoop/hdfs/name</value> </property> <property> <name>dfs.datanode.data.dir</name> <value>file:/root/hadoop/hdfs/data</value> </property> <property> <name>dfs.replication</name> <value>3</value> </property> <property> <name>dfs.namenode.secondary.http-address</name> <value>hadoopserver01:9001</value> </property> <property> <name>dfs.webhdfs.enabled</name> <value>true</value> </property> #vim etc/hadoop/mapred-site.xml 在<configuration></configuration>中加入 <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>mapreduce.jobhistory.address</name> <value>hadoopserver01:10020</value> </property> <property> <name>mapreduce.jobhistory.webapp.address</name> <value>hadoopserver01:19888</value> </property> #vim etc/hadoop/yarn-site.xml 在<configuration></configuration>中加入 <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.auxservices.mapreduce.shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> <property> <name>yarn.resourcemanager.address</name> <value>hadoopserver01:8032</value> </property> <property> <name>yarn.resourcemanager.scheduler.address</name> <value>hadoopserver01:8030</value> </property> <property> <name>yarn.resourcemanager.resource-tracker.address</name> <value>hadoopserver01:8031</value> </property> <property> <name>yarn.resourcemanager.admin.address</name> <value>hadoopserver01:8033</value> </property> <property> <name>yarn.resourcemanager.webapp.address</name> <value>hadoopserver01:8088</value> </property> <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>6078</value> </property> #vim etc/hadoop/yarn-env.sh 中找到 export JAVA_HOME 去掉注释 编辑java地址 export JAVA_HOME=/usr/java/jdk1.8.0_121 找到JAVA_HEAP_MAX=-Xmx1000m 改为 JAVA_HEAP_MAX=-Xmx1024m #vim etc/hadoop/slaves 清空添加 hadoopserver01转载地址:http://idadi.baihongyu.com/