配置过程
修改配置文件
hadoop的配置文件在:/root/apps/hadoop安装目录/etc/hadoop/
-
修改hadoop-env.sh,配置java环境变量
export JAVA_HOME=/usr/local/java
-
修改core-site.xml,设置文件系统和访问位置
b
<configuration>
<property>
<name>fs.defaultFS</name>
<value>hdfs://master:9000</value>
</property>
</configuration>
一律将ip地址改成域名映射
- 修改hdfs-site.xml,设置文件存储的位置(datanode和namenode不在同一个文件夹,所以可以共存在一个机器,通过端口访问)
<configuration>
<property>
<name>dfs.namenode.name.dir</name>
<value>/root/hdpdata/name/</value>
</property>
<property>
<name>dfs.datanode.data.dir</name>
<value>/root/hdpdata/data</value>
</property>
<property>
<name>dfs.namenode.secondary.http-address</name>
<value>slave1:50090</value>
</property>
</configuration>
拷贝整个hadoop安装目录到其他机器
scp -r /root/apps/ slave1:/root/apps/
scp -r /root/apps/ slave2:/root/apps/
scp -r /root/apps/ slave3:/root/apps/
初始化HDFS
配置hadoop环境变量
要运行hadoop的命令,需要在linux环境中配置HADOOP_HOME和PATH环境变量
vi /etc/profile
export JAVA_HOME=/root/apps/jdk1.8.0_60
export HADOOP_HOME=/root/apps/hadoop-2.8.1
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin
初始化namenode的元数据目录
要在master上执行hadoop的一个命令来初始化namenode的元数据存储目录
hadoop namenode -format
创建一个全新的元数据存储目录
生成记录元数据的文件fsimage
生成集群的相关标识:如:集群id——clusterID
启动HDFS
启动namenode进程(在master上,不可在其他机器上,因为配置文件制定了namenode位置,b问题)
hadoop-daemon.sh start namenode
启动完后,首先用jps查看一下namenode的进程是否存在
9000端口是集群信息交流
50070是web端
http://master:50070
启动datanode(任意一台机器)
由于所有的hadoop配置文件都一样,所以所有子都知道master的位置,然后去连接
hadoop-daemon.sh start datanode
一定要在/etc/hadoop/slaves中配置子节点,/etc/hosts名字,且必须用名字,而不能直接输入ip,否则无法加入集群,好像是slaves不支持直接输入ip
一键启动hdfs
修改hadoop安装目录中/etc/hadoop/slaves(把需要启动datanode进程的节点列入)
相当于写了一个远程ssh执行的脚本
master
slave1
slave2
slave3
在master上用脚本:start-dfs.sh
来自动启动整个集群,如果要停止,则用脚本:stop-dfs.sh
其他技巧
1.查看namenode的详细信息
jps
获得进行id
cla@cla:/usr/local/share/hadoop-2.8.1/etc/hadoop$ jps
1857 Jps
1784 NameNode
ps -ef | grep 1784
查看具体信息
cla@cla:/usr/local/share/hadoop-2.8.1/etc/hadoop$ ps -ef | grep 1784
cla 1784 1 2 18:49 pts/8 00:00:05 /usr/local/share/jdk1.8.0_60//bin/java -Dproc_namenode -Xmx1000m -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=/usr/local/share/hadoop-2.8.1/logs -Dhadoop.log.file=hadoop.log -Dhadoop.home.dir=/usr/local/share/hadoop-2.8.1 -Dhadoop.id.str=cla -Dhadoop.root.logger=INFO,console -Djava.library.path=/usr/local/share/hadoop-2.8.1/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Stack=true -Djava.net.preferIPv4Stack=true -Dhadoop.log.dir=/usr/local/share/hadoop-2.8.1/logs -Dhadoop.log.file=hadoop-cla-namenode-cla.log -Dhadoop.home.dir=/usr/local/share/hadoop-2.8.1 -Dhadoop.id.str=cla -Dhadoop.root.logger=INFO,RFA -Djava.library.path=/usr/local/share/hadoop-2.8.1/lib/native -Dhadoop.policy.file=hadoop-policy.xml -Djava.net.preferIPv4Stack=true -Dhadoop.security.logger=INFO,RFAS -Dhdfs.audit.logger=INFO,NullAppender -Dhadoop.security.logger=INFO,RFAS -Dhdfs.audit.logger=INFO,NullAppender -Dhadoop.security.logger=INFO,RFAS -Dhdfs.audit.logger=INFO,NullAppender -Dhadoop.security.logger=INFO,RFAS org.apache.hadoop.hdfs.server.namenode.NameNode
cla@cla:/usr/local/share/hadoop-2.8.1/etc/hadoop$
netstat -nltp | grep 1784
cla@cla:/usr/local/share/hadoop-2.8.1/etc/hadoop$ netstat -nltp | grep 1784
(Not all processes could be identified, non-owned process info
will not be shown, you would have to be root to see it all.)
tcp 0 0 192.168.43.241:9000 0.0.0.0:* LISTEN 1784/java
tcp 0 0 0.0.0.0:50070 0.0.0.0:* LISTEN 1784/java